当前位置: 首页 > news >正文

位运算---LC371两整数之和

一、题目链接

371. 两整数之和 - 力扣(LeetCode)

二、题目要求

给你两个整数ab不使用运算符+-,计算并返回两整数之和。

示例 1:

输入:a = 1, b = 2输出:3

示例 2:

输入:a = 2, b = 3输出:5

三、解决

思路分析:这道题要求我们求两数之和,但是又不允许使用+-运算符,所以我们可以使用位运算来解决这道问题;本体需要使用的是异或和与位运算,在位运算中存在这样两个结论:①异或的结果是无进位相加的结果 ②相与的结果是各位的进位;只需要将两个数异或的结果与相与的结果向左移一位再相加就是最终结果,但是本体又不允许使用加减运算符,而上述的两个步骤就等同于相加,所以我们只需要循环重复这两个步骤,知道进位为零就可以了。

算法原理

①异或结果为无进位相加

任何数字都可以转成二进制,在二进制中如果两个数不相同异或结果就是1,相同就是0,相同的结果有两种“00”、“11”,“00”相加结果就是0,而11相加结果是进位1,所以该位还是0;两个不同的数字“01”,异或后=1,相加也为1,所以该位就是1;由上可知异或的结果就是无进位相加的结果。

②相与的结果就是该位的进位数

这点很简单,如果两位都为1,那么两位相加就要进1,而相与后结果就是1;如果两位中有一个为0,相加后都不需要进位,与相与结果都为0;所以说相与的结果就是该位的进位数。

注意:求出相与的结果后需要向左移一位再与相异的结果相加,因为相与的结果是该位的进位,还没进呢,向左移一位就是进了。

代码展示

int getSum(int a, int b) { while(b) { int x = a ^ b; int carry = (a & b) << 1; a = x; b = carry; } return a; }
http://www.jsqmd.com/news/330923/

相关文章:

  • 宏智树 AI:把期刊论文写作变成 “按图索骥”,新手也能精准踩中录用要点
  • SSM毕设项目:基于SSM的学生选课管理系统(源码+文档,讲解、调试运行,定制等)
  • Spring Boot 与数据源的集成
  • jQuery Mobile 表单选择
  • 【毕业设计】基于SSM的学生选课管理系统(源码+文档+远程调试,全bao定制等)
  • 宏智树 AI:3 类学术 PPT 零门槛!开题、答辩、汇报 30 分钟搞定
  • Spring Boot 的安全机制
  • 古文观芷App搜索方案深度解析:打造极致性能的古文搜索引擎
  • 为什么懂开发的UI设计公司更容易成功?
  • jQuery Mobile 按钮:全面解析与最佳实践
  • Python 学习资源汇总手册
  • 【笔记】【筹码分布图】
  • 医疗连续体机器人模块化控制界面设计(2025年更新版Python库) - 实践
  • AI大模型基于LangChain 进行RAG与Agent智能体开发
  • ScalingLaws-2022-Chinchilla-2:既然Dₒₚₜ/Nₒₚₜ≈20,为什么LLaMA系列用的D/N远大于20【Chinchilla比例:每个参数大约对应20个token】
  • 汉中火锅串串聚餐首选|把把赢火锅串串,24小时鲜货不停歇
  • 开题报告 雅韵古诗词系统python爬虫
  • 《提示工程架构师:开启Agentic AI创新价值宝库的钥匙》
  • 完整教程:程序员技术成长导航,专栏汇总
  • 开发一个Android App: 打牌计分器
  • 【毕业设计】基于SSM的疫情健康上报管理系统(源码+文档+远程调试,全bao定制等)
  • SSM毕设项目推荐-基于SSM实现手机销售商城系统基于SSM的手机商城【附源码+文档,调试定制服务】
  • 提示工程架构师必备:响应优化的服务降级策略
  • 软件测试基础知识
  • 电商数据分析中的多步骤推理挑战
  • 题解:Transformation
  • 高二上期末考试总结
  • 【毕业设计】基于SSM的手机商城(源码+文档+远程调试,全bao定制等)
  • 从技术批判到政治决断:论算法黑箱的资本逻辑与语境主权的治理革命
  • Dify 实战:通过 Dify 快速接入 MCP Server