(x&y)+((x^y)>>1)

来源:互联网 发布:炫浪网络不能在线阅读 编辑:程序博客网 时间:2024/04/29 06:42

很不错的思路,虽然不算高效,但如果在汇编中的话,这种方法可以不产生高位溢出。

大概思路应该是这样:

(x&y)+((x^y)>>1),把x和y里对应的每一位(指二进制位)都分成三类,每一类分别计算平均值,最后汇总。

1、是x,y对应位都是1,用x&y计算其平均值;

2、是x,y中对应位有且只有一位是1,用(x^y)相当于计算机这些位的和,>>1相当于除2;

3、是x,y中对应位均为0,无须计算。

转载自 http://www.cnblogs.com/enthusiastic/archive/2012/10/01/2709802.html

0 0
原创粉丝点击