2つの数値のXORを表す変数があります。例:int xor = 7 ^ 2;
コメントによると、XORで設定されている右端のビットを見つけるコードを調べています。
int rightBitSet = xor & ~(xor - 1);
このコードがどのように機能するかを正確に追跡することはできません。つまり、実際に(バイナリで)つまり17^2
に設定されます(実際には右端のビットが設定され
ます)。セットする)。
コードのロジックは、構成する数値の中で異なるビットを表す数値を見つけることです。コメントは、右端のビットセットを見つけることを示していますが、コードは1つの異なるビットを持つビットパターンを見つけるようです。どこでも。
私は正しいですか?コードがどのように機能するかもわかりません。数と数の間に何らかの関係があるようですrightBitSet
0001
xor
7^3
rightBitSet
0100
4
xor
xor
X
X-1
そのバイナリ表現で?
この関係は何ですか?