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