admin管理员组文章数量:1031187
【位运算】两整数之和
371. 两整数之和
371. 两整数之和
给你两个整数 a
和 b
,不使用 运算符 +
和 -
,计算并返回两整数之和。
示例 1:
代码语言:javascript代码运行次数:0运行复制输入:a = 1, b = 2
输出:3
示例 2:
代码语言:javascript代码运行次数:0运行复制输入:a = 2, b = 3
输出:5
提示:
-1000 <= a, b <= 1000
解题思路:位运算
既然不用 +
和 -
号,那么八成就是使用位运算操作了,我们在前面总结位运算的时候说过,异或 ^
操作的一个功能就是【无进位相加】,也就是二进制的无进位相加,所以我们只需要找到这个进位,就能做到【有进位相加】了,也就是加法操作!
而要找到进位,就只有按位与 &
操作能做到了,因为二进制只有 1
和 1
才能有进位,那么我们只要这种情况,对应的就是按位与 &
操作!
总结一下,就是使用 【异或(无进位相加)+按位与(找到进位)】就能解决这道题,只不过按位与得到的进位,需要向左挪动一位才是进位!
class Solution {
public:
int getSum(int a, int b) {
while(b != 0)
{
int tmp = a ^ b; // 异或操作得到无进位相加的结果
b = ((a & b) << 1); // 按位与之后需要向左移动一位才是进位
a = tmp;
}
return a;
}
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-04-11,如有侵权请联系 cloudcommunity@tencent 删除二进制classintpublicreturn【位运算】两整数之和
371. 两整数之和
371. 两整数之和
给你两个整数 a
和 b
,不使用 运算符 +
和 -
,计算并返回两整数之和。
示例 1:
代码语言:javascript代码运行次数:0运行复制输入:a = 1, b = 2
输出:3
示例 2:
代码语言:javascript代码运行次数:0运行复制输入:a = 2, b = 3
输出:5
提示:
-1000 <= a, b <= 1000
解题思路:位运算
既然不用 +
和 -
号,那么八成就是使用位运算操作了,我们在前面总结位运算的时候说过,异或 ^
操作的一个功能就是【无进位相加】,也就是二进制的无进位相加,所以我们只需要找到这个进位,就能做到【有进位相加】了,也就是加法操作!
而要找到进位,就只有按位与 &
操作能做到了,因为二进制只有 1
和 1
才能有进位,那么我们只要这种情况,对应的就是按位与 &
操作!
总结一下,就是使用 【异或(无进位相加)+按位与(找到进位)】就能解决这道题,只不过按位与得到的进位,需要向左挪动一位才是进位!
class Solution {
public:
int getSum(int a, int b) {
while(b != 0)
{
int tmp = a ^ b; // 异或操作得到无进位相加的结果
b = ((a & b) << 1); // 按位与之后需要向左移动一位才是进位
a = tmp;
}
return a;
}
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-04-11,如有侵权请联系 cloudcommunity@tencent 删除二进制classintpublicreturn本文标签: 位运算两整数之和
版权声明:本文标题:【位运算】两整数之和 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747722733a2208994.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论