【算法】位运算算法——两整数之和

题解:两整数之和(位运算算法)

目录

  • 1.题目
  • 2.位运算算法
  • 3.参考代码
  • 4.总结

1.题目

题目链接:LINK
在这里插入图片描述

2.位运算算法

这个题目难点就在于不能用+、-

那什么能够代替加号呢?
既然数的层面不能用+号,那二进制的角度去用+号即可。

恰好,就有两个这种运算符恰好满足我们的需求。
按位异或,对不存在进位的数字进行相加。
按位与,对需要进位的数字取1

当我们对a^b进行异或的时候,
我们发现:
如果1和0不同的位数异或是我们想要的结果,但两个二进制都是1的时候进行异或就不对(红色代表不满足我们预期,绿色代表满足我们预期)
在这里插入图片描述
结论:错误的都是需要进位的二进制

那如何进行进位呢?
怎么确定哪几个二进制位需要进位? ——按位与
按位与恰好可以解决我们这个问题,两个1的二进制位肯定是需要进位的啊(黄色代表需要进位的地方)。
在这里插入图片描述
那如何把这个黄色的位进到a^b上去呢?
我们可以把a&b向左移动一位,表示向其更高位进行进位。
在这里插入图片描述
然后我们再对a^b 和 (a&b)>>1再进行异或运算,看看能不能进上一位。
在这里插入图片描述
我们发现好像有个1进位成功,还一个没能成功,但是没关系,继续以此循环即可。

总过程如下:
在这里插入图片描述

3.参考代码

//一般版本
class Solution {
public:int getSum(int a, int b) {int Carry = 1;while(Carry){int add = a ^ b;Carry = (a & b) << 1;a = add;b = Carry;}return a;        }
};
//语法优化
class Solution {
public:int getSum(int a, int b) {do{a = a ^ b;b = (((a^b) & b) << 1);}while(b);return a;        }
};

4.总结

我们本道题首先题目规定不能用+号,所以我们想到直接去二进制层面进行操作,用^代替无进位相加,用&代替进位,两者结合即可模拟出二进制层面加法的操作。


EOF

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/18211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 数据类型和搜索引擎

文章目录 【 1. 数据类型 】1.1 数值类型1.1.1 整型1.1.2 小数1.1.3 数值类型的选择 1.2 日期和时间YEAR 年TIME 时间DATE 日期DATETIME 日期时间TIMESTAMP 时间戳日期和时间的选择 1.3 文本字符串CHAR 固定字符串、VARCHAR 可变字符串TEXT 文本ENUM 枚举SET 集合字符串类型的选…

假如有几十个请求,如何去控制高并发?

公司项目中做图片或文件批量下载&#xff0c;每次下载都是大批量的&#xff0c;那么假如我一次性下载几十个&#xff0c;如何去控制并发请求的&#xff1f; 让我想想&#xff0c;额~&#xff0c; 选中ID&#xff0c;循环请求&#xff1f;&#xff0c;八嘎&#xff01;肯定不是那…

MySQL中Undo-log是什么?有什么作用?

2.6.1. Undo-log撤销日志 Undo即撤销的意思&#xff0c;通常也称为回滚日志&#xff0c;用来给MySQL撤销SQL操作的。 当一条写入类型的SQL执行时&#xff0c;都会记录Undo-log日志&#xff0c;Undo-log并不存在单独的日志文件&#xff0c;InnoDB默认是将Undo-log存储在xx.ibd…

利用基于CNN的人员检测与关键词识别的TinyML实现无接触电梯

目录 说明 论文概述 摘要 引言 现有非接触式电梯解决方案 新解决方案的需求 tinyML实施 系统构建和算法管道 CNN和TinyML实现 结果与讨论 结论 视频演示和代码可用性 一点感想 说明 我一直使用Google Schloar订阅最新的论文消息&#xff0c;今天看到一篇论文的标…

MR混合现实情景实训教学系统在临床医学课堂上的应用

MR混合现实情景实训教学系统在临床医学课堂上的应用可以带来许多积极的影响&#xff0c;具体表现在以下几个方面&#xff1a; 1. 增强教学的真实感和互动性&#xff1a;MR混合现实技术能够创建出高度逼真的模拟临床环境&#xff0c;使学生能够身临其境地体验临床实践。这种技术…

word快速公式教程

好文章分享 word快捷输入数学公式、word公式最详细介绍&#xff01;释放鼠标、代码大全&#xff01;&#xff01;&#xff01;&#xff08;小白也能学&#xff09; - 知乎

H6246 60V降压3.3V稳压芯片 60V降压5V稳压芯片IC 60V降压12V稳压芯片

H6246降压稳压芯片是一款电源管理芯片&#xff0c;为高压输入、低压输出的应用设计。以下是对该产品的详细分析&#xff1a; 一、产品优势 宽电压输入范围&#xff1a;H6246支持8V至48V的宽电压输入范围&#xff0c;使其能够适应多种不同的电源环境&#xff0c;增强了产品的通用…

2022ICPC(南京站)

I题 思路&#xff1a;这是一个签到题比较简单&#xff0c;只要判断出字符串中出现最多的字符&#xff0c;然后再让字符总数减去就行了 代码如下 //I #include<iostream> #include<algorithm> #include<string> #include<map> #define int long long…

统计本地端口占用情况

要查看MongoDB是否正在备份&#xff0c;可以通过以下几种方法&#xff1a; 查看MongoDB的进程列表&#xff1a; 使用命令ps -ef | grep mongo&#xff0c;这将列出所有正在运行的MongoDB进程。在输出的列表中&#xff0c;你可以查看是否有与备份相关的进程或任务正在运行。 查…

据阿谱尔APO Research调研显示,2023年全球汽车脚踏垫市场销售额约为52亿美元

根据阿谱尔 (APO Research&#xff09;的统计及预测&#xff0c;2023年全球汽车脚踏垫市场销售额约为52亿美元&#xff0c;预计在2024-2030年预测期内将以超过2.81%的健康成长率成长。 汽车脚垫&#xff0c;是放置在汽车、卡车、货车和 SUV 等车辆地板上的保护性覆盖物&#x…

网络安全技术心得体会

网络与信息安全技术心得体会 通过对网络安全这门课程的学习&#xff0c;我进一步了解了网络安全技术的相关知识。大致来说&#xff0c;所谓网络安全指的是对网络系统中各类软硬件和数据信息等提供保护屏障&#xff0c;确保数据信息不受到恶意侵入、窃取等破坏&#xff0c;保证…

记一次重定向问题(浏览器安全)解决

近期做单点登陆功能&#xff0c;本身应该是一个很简单的功能&#xff0c;却发生了意向不到的问题…让我们看下&#xff1a; 首先第三方给出的地址需要通过JWT框架获取token拼接后跳转&#xff0c;我这边为了方便首选肯定是考虑用response.sendRedirect(url)&#xff0c;但是做好…

基于朴素贝叶斯算法的微博舆情监控系统,flask后端,可视化丰富

背景&#xff1a; 微博作为中国最大的社交媒体平台之一&#xff0c;汇聚了海量用户生成的文本数据&#xff0c;承载着丰富的社会信息和舆论动向。随着互联网的快速发展&#xff0c;人们对于利用这些数据进行舆情分析和预测的需求日益增加。在这种情况下&#xff0c;以Python为…

OpenHarmony应用在DevEco Studio配置默认密钥为123456的签名如何进行一键签名

目录 一.背景知识 二.完成自动化操作 三.在DevEco Studio中配置自动化签名 一.背景知识 首先OpenHarmony的应用需要使用OpenH

Java实现图片保存到pdf的某个位置2

Java实现图片保存到pdf的某个位置2 1、依赖–maven <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.24</version></dependency>2、上代码 import org.apache.pdfbox.pdmode…

java多线程中的“任务取消“

概要 在使用 java 进行多线程开发时,任务和线程的启动很容易.大多数时候我们都会让它们运行直到结束,或者让它们自行停止.然而,有时候我们希望能提前结束任务或线程,或许时因为用户取消了操作,或者应用程序需要被快速关闭. 要使任务和线程能够安全/快速/可靠的停止下来,并不是…

Sui新共识协议刷新了区块链交易速度的标准

Sui是提供业界领先性能和无限水平扩展的创新Layer 1区块链&#xff0c;今日在官推上宣布其最新共识协议Mysticeti已成功部署到测试网。这一重大突破将Sui测试网的共识时间减少了80%&#xff0c;至390毫秒&#xff0c;同时保持协议的行业领先吞吐量。这一令人印象深刻的演示证明…

2024「618年中盛典」媒体邀约有哪些优惠活动?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 51媒体网2024年618 活动正式开启&#xff0c;也预示着2024传播季—年中盛典的到来&#xff0c;从即日起下单的客户&#xff0c;即可享受满减增等优惠政策&#xff0c;新客更享受折上折的…

模板编程中实现 SFINAE(Substitution Failure Is Not An Error)

在C模板编程中&#xff0c;std::enable_if 是一个常用的工具&#xff0c;它依赖于 SFINAE&#xff08;Substitution Failure Is Not An Error&#xff09;原则来控制模板的启用或禁用。理解 std::enable_if 如何工作&#xff0c;可以更清楚地看到为什么 disable_if_same_or_der…

Android plugin如何兼容App插件和library插件

Android插件的开发&#xff0c;在网上有很多资料&#xff0c;如&#xff1a;Android Gradle 插件开发入门指南&#xff1a;https://juejin.cn/post/6887581345384497165&#xff0c;最近由于工作需要&#xff0c;开发了一个jacoco与记录用例执行顺序的插件&#xff0c;整体功能…