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

位图——求两数之和

题目要求很简单,给两个整数ab,计算并返回两数字之和,但是要求不能使用+和-

我们在讲^运算时有一个记法是无进位相加,也就是如果两个都是1,那么1+1要进位此为变成0,但是我们不做真正的进位(前一位不改动),然后0和1的位数相加为1(自然无进位不做处理)。因此我们发现,只有二者都为1的情况下该位才进位,否则都不处理(有点类似于&的运算律)

因此,我们可以用a&b找到两数要进位的位置,但进位并不是在当前位,而是在进位的前一位。(a&b)<<1。然后我们再通过a^b得到两数的无进位相加的位置。然后我们只需要把这两个加起来就可以了(但也不能真的加),只需要重复上述操作即可。把a^b看成a,(a&b)<<1看成b。直到a&b==0完毕(无进位了,a^b就是两数之和)。

int  sum(int a,int b)
{while(b!=0){int x=a^b;unsigned int y=(unsigned int)(a&b)<<1;a=x;b=y;}
}

http://www.dtcms.com/a/211243.html

相关文章:

  • 力扣热题——查找包含给定字符的单词
  • 上海内推 | 上海算法创新研究院-上海交大联合招收空间智能/具身智能算法实习生
  • springboot中redis的事务的研究
  • 动态规划dp
  • 力扣刷题DAY16(二叉树+迭代遍历)
  • NHANES指标推荐:PHDI
  • 数据库blog6_商业数据库下载知识
  • Day 34
  • 【强化学习】#7 基于表格型方法的规划和学习
  • 续位值运算---左移、右移
  • 2025年安克创新Anker社招校招入职测评 | 3天备考、自适应能力cata测评北森题库、安克创造者启航试炼、安克AI能力测评能力测评历年真题
  • 抖音出品AI短剧《牧野诡事》能否给AI短剧带来新一轮爆发?
  • Linux中的nfs
  • Linux(6)——第一个小程序(进度条)
  • python打卡day35@浙大疏锦行
  • ping命令常用参数以及traceout命令
  • Cookie 与 Session
  • 25. 日志装饰器的开发
  • springboot 多模块,打包为一个jar包
  • 细胞冻存的注意事项,细胞冻存试剂有哪些品牌推荐
  • day25JS- es5面向对象、Proxy代理对象
  • 【大模型报错解决】cublasLt ran into an error!
  • CSS定位详解:掌握布局的核心技术
  • Panasonic Programming Contest 2025(AtCoder Beginner Contest 406)D-E 题解
  • 【Qt开发】进度条ProgressBar和日历Calendar Widget
  • 第十节第九部分:jdk8新特性:方法引用、特定类型的方法引用、构造器引用(不要求代码编写后同步简化代码,后期偶然发现能用这些知识简化即可)
  • Java中的String的常用方法用法总结
  • 【Java项目测试报告】:在线聊天平台(Online-Chat)
  • 2025年渗透测试面试题总结-匿名[社招]前端安全(题目+回答)
  • windows10重装ssh无法下载