[トップ][編集][本文][編集履歴][一覧][最近の更新][->English]

Note:ビットシフト

負数についてのシフト例も載せてみてはどうでしょうか?
右シフトは符号が変わりませんが(右一方向シフト)、 左シフトを含むビットシフトは符号の変わる場合があります。
負数をシフトすること自体そう無いと思いますが・・・ 以下そのサンプル・・・書式も変わるし大げさかな<kz3

-1 >> 1
説明 -1 == $FFFFFFFF
(0b11111111111111111111111111111111)
を右に1bitずらす
(MSBに1が補完される)
※MSB:ビット列において一番左側にあるビットのこと。<->LSB
結果 -1 == $FFFFFFFF
(0b11111111111111111111111111111111)
 
1431655765 << 1 >> 1
説明 1431655765 == $55555555
(0b01010101010101010101010101010101)
を左に1bitずらしてから右に1bitずらす
(MSBに1が補完される)
結果 -715827883 == $C5555555
(0b11010101010101010101010101010101)
 
-1431655766 << 1 >> 1
説明 -1431655766 == $AAAAAAAA
(0b10101010101010101010101010101010)
を左に1bitずらしてから右に1bitずらす
(MSBが0になる)
結果 715827882 == $2AAAAAAA
(0b00101010101010101010101010101010)

たまに補完を利用したシフトとかあるので、あって良いんじゃないですか? 負の数ってどうなってるの?って理解にもなるし。