2016-04-10 9 views
1

andの数値とその2の補数の演算を行うときに意味がありますか?例えば番号とその2の補数

int x = 31; 
int result = x & (-x) 

はどんな意味論的な意味を保持する結果としていますか?

答えて

0

結果には1ビットが設定されます。これは、xの最下位ビットです。換言すれば、結果は、「丸い」xが奇数の場合2:1、2の倍数が2、4の倍数が4などであることを示します。

これは、-xが。 の下位1はすべて0になり、~xの下位0は1になり、これはx~x + 1の唯一のビットになります共通点がある。