1

我想得到2^n它的其余部分意味着number % 2^n(n 介于 0 和 31 之间)。

首先我认为很简单(x>>n),但它有效>0

n=0 -> 0

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

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

4

1 回答 1

0

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

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

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

于 2012-09-18T12:31:11.993 回答