LeetCode67.二进制求和 用c++写出
时间: 2024-10-04 15:02:53 浏览: 56
LeetCode上的第67题是关于计算两个非负整数的二进制表示的和,同时考虑进位的情况。你可以使用位运算(bitwise operations)来解决这个问题,因为位运算是计算机处理二进制数据非常高效的方式。
下面是一个简单的C++解决方案:
```cpp
class Solution {
public:
int add(int a, int b) {
while (b != 0) { // 当第二个数不为0时继续循环
int carry = a & b; // 计算当前位的进位
a = a ^ b; // 异或操作得到当前位的结果
b = carry << 1; // 将进位左移一位
}
return a;
}
};
```
这个函数的工作原理是,通过`&`(按位与)操作获取当前位的进位,然后用`^`(按位异或)来更新结果,`<<`(左移)将进位向左移动一位以便下一次迭代。当第二个数`b`变为0时,所有位的加法都已经完成,返回的结果就是最终的答案。
阅读全文