记录代码——位运算求平均值

来源:互联网 发布:linux hadoop 安装 编辑:程序博客网 时间:2024/05/20 05:26

0:前言

当a和b相加出现溢出的时候采用

1:代码
(a&b)+((a^b)>>1)
2:解释

想象一下a和b按照位整齐排序,当a和b对应为上全为1的时候相加会使此位为0,并且会向前进一位,所以当出现对应位全为1的时候,直接在此位保留一个1就算对这两个对应位求平均值了

然后剩下就是对应位不全为1的时候,分为a的某一个位为1,对应的b的那个位为0,或者倒过来,或者两个都为0,这个时候就要把他们除以2(右移1位)了

然后把结果加起来就ok


原创粉丝点击