Calculate the sum of two integers a and b, but you are not allowed to use the operator+and-
1.位操作符
- 与 &:两个位都为1,结果才为1
- 或 | :两个位都为0,结果才为0
- 异或 ^:两个位相同为0,相异为1
- 取反 ~: 0变1,1变0
- 左移 <<:左移若干位,高位丢弃,低位补0
- 右移 >>:右移若干位,对于无符号数 高位补0;有符号数分为算数右移(补符号位)和逻辑右移(补零)
位操作只用于整形数据
2.算法
class Solution{
public:
int add (int a, int b) {
while(a!=0 && b!=0){
int temp = a;
a = temp & b;
b = b ^ temp;
a = a << 1;
}
return a == 0?b:a;
}
};