Chinaunix首页 | 论坛 | 博客
  • 博客访问: 145242
  • 博文数量: 66
  • 博客积分: 1571
  • 博客等级: 上尉
  • 技术积分: 715
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-24 22:55
文章分类

全部博文(66)

文章存档

2012年(66)

我的朋友

分类: C/C++

2012-04-08 14:29:33

Q不用+和/运算符如何求两个整数的平均值
提示:考虑&以及^
 
 
 
 
 
 
 
 
 
 
 
 
A
设有2个数a,b
a&b代表的是a和b的二进制表达式中那些共同的部分的合并(∩);
a^b代表的是a和b的二进制表达式中那些不同的部分的叠加(∪);
所以a&b+a^b+a&b=a+b
平均值即为   (a&b+a^b+a&b)/2
其中左移位<<相当于乘法,右移位>>相当于除法
原式可以描述为:
        
            (a&b)+((a^b)>>1)
阅读(1043) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~