当前位置: 首页 > 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;}
}

相关文章:

  • 力扣热题——查找包含给定字符的单词
  • 上海内推 | 上海算法创新研究院-上海交大联合招收空间智能/具身智能算法实习生
  • 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包
  • 细胞冻存的注意事项,细胞冻存试剂有哪些品牌推荐
  • 麻辣烫配方教授网站怎么做/百度北京总部电话
  • 梅州专业网站建设教程/百度应用商店下载安装
  • 电信改公网ip可以做网站吗/qq群引流推广平台免费
  • 记事本做网站怎么改字体颜色/百度seo 优化
  • 用html5做的网站过程/西安做网站的公司
  • 应用公园收费标准/seo收录查询工具