优选算法_两数之和_位运算_C++

一.题目解析:

两=-整数的和不用加法

算法解析:

我们知道异或是一种不进位的加法

所以我们用这种特殊的加法来代替

我们找进位就很简单了,1和1进位,&的特性就是有0就是0,就可以找到哪里是进位,进一位应该是往前一位,所以我们左移(<<1)一位.

下面我们举个例子来展现所有过程:

13+23=36,即01101+10111=100100

二.代码编写

cpp 复制代码
class Solution {
public:
    int getSum(int a, int b) {
        while(b!=0)//找不到进位了,退出
        {
            int x=(a&b)<<1;//寻找进位
            a=a^b;//不进位的加法
            b=x;
        }
        return a;
    }
};
相关推荐
LaughingZhu几秒前
Product Hunt 每日热榜 | 2026-09-02
java·ide·intellij-idea
旧梦95276 分钟前
Java EnumMap 详解:原理、用法与实战
java·开发语言
Tongsr8 分钟前
别只混淆代码:用 Kaleido 加固整个 Android Release AAB
前端·算法·github
高亦真9 分钟前
今天是学习嵌入式的第34天
linux·学习·算法
兜里ヌ有糖12 分钟前
java Date时间格式工具类DateUtil
java
2402_8828938616 分钟前
封装红黑树实现map和set —— 从源码到模拟实现
c++·set·map
zww894911128 分钟前
家政多商户系统开发:从架构设计到落地实践
java·eclipse
snow@li1 小时前
Java:微服务项目与单体项目区别、市场占有率全景深度分析
java·开发语言·微服务
还是大剑师兰特1 小时前
Maven‑3.9.16 Windows 下载+安装+环境变量完整教程
java·windows·maven
吴声子夜歌1 小时前
Java——性能和效率
java·开发语言