我希望得到2^n
的余数,这意味着number % 2^n
(n介于0和31之间)。
首先,我认为只是(x>>n)
,但它适用于>0
n=0 -> 0
但我不能使用if else语句,但我不知道如何从if else转换为逐步按位操作。
请给我任何关于这个问题的提示。
答案 0 :(得分:0)
如果我正确理解了这个问题,那么你只需要这样做:
remainder = x & ((1 << n) - 1); // remainder = x % 2^n
这使用了众所周知的属性:x % 2^n == x & (2^n - 1)
。