C++で数値の符号ビットにアクセスできるようにしたい。私の現在のコードは次のようになります。
int sign bit = number >> 31;
それはうまくいくようで、0
正の数と-1
負の数が得られます。-1
ただし、負の数を取得する方法がわかりません。12が
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1100
次に-12は
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 0011
31ビットシフトすると
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001
これは-1ではなく1ですが、シフトすると-1になるのはなぜですか?