LeetCode商城的鼠标垫好心动,争取暑假努力刷题搞到手。
此题并非题1两数之和。而是用位运算实现计算机加法。 LeetCode371
不使用运算符 +
和 -
,计算两整数 a
、b
之和。
无论是十进制还是二进制,加法都可以看成无进位加法与进位加法的和,当两数相加无需进位时,无进位加法就是目标值。
相对应的,无进位加法指异或操作,进位加法指位与运算。
public int getSum(int a, int b) { int carrier; while(b!=0){ carrier = (a & b) << 1; //进位 a = a ^ b; //无进位 b = carrier; } return a; }