题目描述:实现a+b,但是不用加号
解析:
a和b的异或运算被称作没有进位的加法运算。其实可以想象,如果1和1想加 结果为0进位为1 0和0相加 还是0 1和0相加 还有0和1相加都是一 刚好符合异或运算的规则,然后现在要解决的就是进位问题,进位可以通过与运算来解决,与运算后的结果如果左移一位,刚好是进位后的结果,此时用这两个结果再做一次上面描述的过程,那么直到进位为0的时候,就是最终的结果了,下面是代码
int add(int a,int b)
{
int sum;
int carry ;
while(b != 0)
{
sum = a ^ b;
carry = (a & b) << 1;
a = sum;
b = carry;
}
return a;
}