1

残りの部分を取得したいのは、 (nは0から31の間)2^nという意味です。number % 2^n

最初は簡単に思います(x>>n)が、うまくいきますn>0

n=0 -> 0

しかし、if elseステートメントは使用できませんが、ifelseから段階的なビット演算に変換する方法がわかりません。

この質問のヒントを教えてください。

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 に答える