下面的位运算符在现实世界中有哪些用例?
和 XOR 不 或 左/右转
下面的位运算符在现实世界中有哪些用例?
和 XOR 不 或 左/右转
当前回答
一个数x是2的幂吗?(例如,在计数器递增的算法中很有用,并且一个操作只执行对数次)
(x & (x - 1)) == 0
整数x的最高位是哪位?(例如,这可以用来找出比x大的2的最小次幂)
x |= (x >> 1);
x |= (x >> 2);
x |= (x >> 4);
x |= (x >> 8);
x |= (x >> 16);
return x - (x >>> 1); // ">>>" is unsigned right shift
整数x的最小1位是哪一位?(帮助找出能被2整除的次数。)
x & -x
其他回答
数据库世界中的另一个真实应用程序是MySQL,它的数据类型是SET。
位操作符由DBMS存储SET数据类型。设置可以节省空间。
Element SET Value Decimal Value
Travel 00000001 1
Sports 00000010 2
Dancing 00000100 4
Fine Dining 00001000 8
我们使用位标记,使会话较小的登录权限在我们的内部网站。
一个数x是2的幂吗?(例如,在计数器递增的算法中很有用,并且一个操作只执行对数次)
(x & (x - 1)) == 0
整数x的最高位是哪位?(例如,这可以用来找出比x大的2的最小次幂)
x |= (x >> 1);
x |= (x >> 2);
x |= (x >> 4);
x |= (x >> 8);
x |= (x >> 16);
return x - (x >>> 1); // ">>>" is unsigned right shift
整数x的最小1位是哪一位?(帮助找出能被2整除的次数。)
x & -x
当我第一次开始C编程时,我理解了真值表和所有的东西,但直到我读了这篇文章http://www.gamedev.net/reference/articles/article1563.asp(它给出了真实的例子),我才完全了解如何实际使用它。
如果你想计算你的数字mod(%) 2的某次方,你可以使用yourNumber & 2^N-1,在这种情况下,它与yourNumber % 2^N相同。
number % 16 = number & 15;
number % 128 = number & 127;
这可能只是作为模数运算的一种替代品有用,它的红利很大,是2^N。但即便如此,在我在。net 2.0上的测试中,它相对于模运算的速度提升也可以忽略不计。我怀疑现代编译器已经执行了这样的优化。有人知道更多吗?