不用加减乘除做加法

问题描述

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

思路分析

核心思想是采用位运算,主要分为三步,比如5(101)+17(10001),第一步各位相加但不进位,得10100,第二部记下进位,的10,最后一步把前两部相加,得22(10110),根据异或和与逻辑与的运算规则,很容易知道第一步符合异或规则,第二部先与在左移一位进位即可

码上有戏

1
2
3
4
5
6
7
8
9
10
public int Add(int num1,int num2) {
int sum,carry;
do{
sum=num1^num2;
carry=(num1&num2)<<1;
num1=sum;
num2=carry;
}while(num2!=0);
return num1;
}

热评文章