-1
(2 << 31
)の左シフト操作を試みましたが、得られた結果は0
でした。なぜそれが0
になり、n
の最大範囲は(2 << n
)になるのでしょうか?左シフト操作の最大範囲
(2 << 31
)の左シフト操作を試みましたが、得られた結果は0
でした。なぜそれが0
になり、n
の最大範囲は(2 << n
)になるのでしょうか?左シフト操作の最大範囲
2はバイナリで10であり、32ビットデータに00000000000000000000000000000010として格納されます。その10を31で左にシフトしようとしています.10が既に2つの場所を占めているので、左に向かって31から-2 0を飛びます。 32番目の0に達すると、10番目の '0'は32番目の場所に格納され、32番目の後に場所がないので '1'は失われます。結果は0000000000000000000000000000000の0になります。
そこに情報を追加する必要があります:使用している言語と、使用しているデータ型。 – jsbueno