标签:class while 一个 其他 table res 代码实现 return 产生
问题:设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。
代码实现:
class Solution {
public int add(int a, int b) {
while((a&b)!=0){//这两数的字节码相加是否会产生进位
int temp=a;
a=(a&b)<<1;//对会产生进位的位置进行进位
b=(b^temp);//当a+b不进位时,运算
}
return a^b;//将最终不在会产生进位的两数相加
}
}
解释:两数相加时,其二进制中相对应的每一位值的运算有以下几种可能:
a | 0 | 0 | 1 | 1 |
---|---|---|---|---|
b | 0 | 1 | 0 | 1 |
+ | 0 | 1 | 1 | 10 |
如图可知:当两数的相同位不全为1时,可使用^进行计算;当两数的相同位都是1时,将产生进位。
计算步骤:
标签:class while 一个 其他 table res 代码实现 return 产生
原文地址:https://www.cnblogs.com/ekig/p/14757071.html