如何猜测不使用if else语句的按位运算?

时间:2012-09-18 09:23:53

标签: bitwise-operators

我希望得到2^n的余数,这意味着number % 2^n(n介于0和31之间)。

首先,我认为只是(x>>n),但它适用于>0

n=0 -> 0

但我不能使用if else语句,但我不知道如何从if else转换为逐步按位操作。

请给我任何关于这个问题的提示。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,那么你只需要这样做:

remainder = x & ((1 << n) - 1); // remainder = x % 2^n

这使用了众所周知的属性:x % 2^n == x & (2^n - 1)