(x&y)+((x^y)>>1)
来源:互联网 发布:沈阳知行科技有限公司 编辑:程序博客网 时间:2024/06/08 04:12
int f(int x,int y)
{
return (x&y)+((x^y)>>1);
};
f(729,271)=500.
解答:
x&y是取相同的位与,这个结果是x和y相同位,x^y是取x和y的不同位的和,右移1位,相当于除以2.所以结果是求x和y的平均数。
如果二进制不易理解,那我们看看十进制的情况。
假如将&操作和^操作推广到是取十进制位中来,即如果&操作对应的两个位上的数相同,则结果为两个数中的一个,否则为0.如2&2=2,2&3=0;如果^操作则留下两个数不同的那些位,234^136=204+106;
(以下的&和^都是上面假设推广到十进制中的运算符,而非二进制中的运算符)
现在如果设x=234,y=136,x&y=30,x^y=204+106,(x&y)+((x^y)/2)=30+(204+106)/2=185.
( (234+136) / 2 = ( 204+30+106+30) / 2 = 30 + (204+106) / 2 ).
- (x&y)+((x^y)>>1)
- (x&y)+((x^y)>>1)
- (x&y)+((x^y)>>1)
- (x&y)+((x^y)>>1)
- (x&y)+((x^y)>>1)
- $$x^y+y^x>1$$
- (x&y) + ( (x^y)>>1 )证明
- (x&y) + ( (x^y)>>1 )证明
- (x&y)+((x^y)>>1)用法
- (x&y) + ( (x^y)>>1 )证明
- return (x&y)+((x^y)>>1 ) 解释
- (x&y) + ( (x^y)>>1 )证明
- (x&y) + ( (x^y)>>1 )证明
- (x&y) + ( (x^y)>>1 )求平均值
- x > y ? y : x > z ? z : x;
- (x&y)+((x^y)>>1)(面试宝典)
- 使用(x&y) + ((x^y)>>1) 求平均数
- 对(x&y)+((x^y)>>1)的理解
- Android开发---从零搞起1
- 困惑—接下来的java路如何走?
- poi包下载地址
- navicat 10.x 注册码
- Objective-c小记
- (x&y)+((x^y)>>1)
- 使用Wordpress平台建设企业网站的19个理由
- 论老之将至
- CursorTreeAdapter自定义Cursor
- IOS 6下的viewDidUnload处理
- haskell(12)
- 50个c/c++代码网站
- windows phone:Windows Phone From Scratch #18 – MVVM Light Toolkit Soup To Nuts 3
- 改变oracle 10g 归档日志dest