只用逻辑运算和移位运算求两个数的平均数
2015-03-22 22:30
239 查看
[code]int mean(int x, int y) { return (x&y) + ((x^y) >> 1); }
取相同的部分加上相异的部分的一半,即为平均值。
同样的原理也可以用于求两个数的和,代码如下(变动不大):
[code]int add(int x, int y) { return ((x&y) + ((x^y) >> 1)) << 1; }
相关文章推荐
- 8086逻辑运算和移位指令
- 算数运算符(+-*/)优先级>移位运算>位运算>逻辑运算
- 如何只用逻辑运算实现算术加减乘除运算
- 逻辑运算之移位运算的学习
- 如何只用逻辑运算实现算术加减乘除运算
- 用位运算求两个数的平均数
- 逻辑运算指令和移位指令
- 8086逻辑运算和移位
- 80X86学习笔记--逻辑运算与移位指令
- 每天一看---c中的位级运算、逻辑运算、移位运算
- 8086逻辑运算和移位
- Java的运算符号(逻辑与、或、非、移位运算)
- (笔试题)只用逻辑运算实现加法运算
- (笔试题)只用逻辑运算实现乘法运算
- 8086逻辑运算和移位
- 只用位运算不用算数运算求两个数的加减
- [深入理解计算机系统]C语言中的位运算、逻辑运算和移位运算
- Java的运算符号(逻辑与、或、非、移位运算)
- Java的运算符号(逻辑与、或、非、移位运算)
- 关于如何利用移位运算和逻辑运算来加速算法的小技巧