问题:
Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.
Example:
Given a = 1 and b = 2, return 3.
计算2个整数相加,不能使用'+','-'操作符。
思路:
不能用操作符进行+ - 操作,很容易想到用位操作,那么位的 与 或 非 和异或,左移,右移在数学上到底有什么含义呢?
我们应该用那个位操作来代替+ - 操作呢?
首先我们先总结一下,各种位操作所代表的数学意义和位运算的特殊用途。
与操作:0&0=0; 0&1=0; 1&0=0; 1&1=1;
0001 1001
0000 1010
-----------------------------
0000 1000
得到的结果和原来的数有什么关系么?
数学意义:我们是不是可以将结果左移一位,然后将结果看成是两数之和的进位,减法,看成一个正数和一个负数的相加。
注意:负数按补码形式参加按位与运算。