优选算法_两数之和_位运算_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;
    }
};
相关推荐
靠沿1 小时前
【优选算法】专题十六——BFS解决最短路径问题
redis·算法·宽度优先
博风1 小时前
算法:双指针解:盛最多水的容器
算法·leetcode
李白的粉1 小时前
基于springboot的知识管理系统
java·spring boot·毕业设计·课程设计·知识管理系统·源代码
大傻^2 小时前
Spring AI 2.0 多模型提供商配置:OpenAI、Gemini、Anthropic 与 Ollama 深度集成
java·人工智能·spring·springai
爱丽_2 小时前
JVM 堆参数怎么设:先建立内存基线,再谈性能优化
java·jvm·性能优化
童话ing2 小时前
【Golang】Golang Map数据结构底层原理
数据结构·golang·哈希算法
夏乌_Wx2 小时前
图 | 3道LeetCode常见笔试、面试题汇总
算法
wWYy.2 小时前
左值引用和右值引用
数据结构
IT猿手2 小时前
MATLAB模拟四旋翼无人机飞行,机翼可独立旋转
开发语言·matlab·无人机