(x&y)+((x^y)>>1)(面试宝典)
来源:互联网 发布:安卓编程 编辑:程序博客网 时间:2024/05/14 06:21
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 )
- (没明白)程序员面试宝典(p39)-----(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)+((x^y)>>1)
- (x&y)+((x^y)>>1)
- $$x^y+y^x>1$$
- 面试---(x&y) + ( (x^y)>>1 )求平均数
- ( (x&y) + ( (x^y)>>1 ) )是什么意思?what's up?
- (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 )证明
- oracle常用服务含义
- friends 103 The One With the Thumb
- 找出唯一的满足a + b + c = 1000的毕达哥拉斯三元组{a, b, c}。
- QTP的描述性编程与正则表达式
- Unity学习笔记2:物理引擎和碰撞
- (x&y)+((x^y)>>1)(面试宝典)
- RQNOJ 698(矩形计数-圆内接矩形数)
- pat 1496 数列区间//线段树
- Unity学习笔记3:随机数和动画脚本
- 两个Lader对象共享bottom
- QTP的脚本Action模板
- hdu - 1892 - See you~(二维树状数组(单点修改))
- 输入一个字符串,将其中连续的数字作为一个整数,一次存放到另一个整型数组,设计一个函数,把指向字符串的指针和指向整数的指针作为函数形参
- 将日期格式化为“2013年03月17日”的形式