- ベストアンサー
シフト演算の左シフトが何で72になるのでしょうか?
■やりたいこと ・100を左に1ビット(1けた)シフトさせたら2倍になることを確かめたい ■試したこと ・100を2進数へ変換 → 1100100 ・左に1ビット(1けた)シフト → 1001000 ・1001000を10進数へ変換 → 72 ■質問 ・どこで間違えているのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>・1ビット左にずらしたら、一番左を削除して、1番右に0を入れる たしかに一番左は消えますが、それは8ビット、16ビット、32ビットなどの境界です。 一番左が1の時、これを消したら数字としては成り立ちません。
その他の回答 (3)
- ok-kaneto
- ベストアンサー率39% (1798/4531)
>・1ビット左にずらしたら、一番左を削除して、1番右に0を入れる 桁長が決まっていればそうです。その場合「桁あふれ」が発生するので計算結果が異なります。 桁長が決まっていなければ切り捨てる必要はありません。
お礼
回答ありがとうございましたー
- maiko0318
- ベストアンサー率21% (1483/6969)
・100を2進数へ変換 → 1100100 ・左に1ビット(1けた)シフト → [1]1001000 ←先頭の1が足りない ・1001000を10進数へ変換 → 72 ←先頭の1=128分足りない
補足
回答ありがとうございます。 ・下記を見て、あふれたビットは捨てる、のだと思い左端の1を削除したのですが、あふれていなかったということでしょうか? ・一定の桁数(?)までは、ただ左にずらすだけ? ・あるいはこれは符号ビット? http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text/shift.htm 自分の認識 ・1ビット左にずらしたら、一番左を削除して、1番右に0を入れる ・そんな単純な話ではない?
- ok-kaneto
- ベストアンサー率39% (1798/4531)
>・100を2進数へ変換 → 1100100 >・左に1ビット(1けた)シフト → 1001000 ・左に1ビット(1けた)シフト → 11001000 先頭の1がなくなってます。
補足
回答ありがとうございます。 ・下記を見て、あふれたビットは捨てる、のだと思い左端の1を削除したのですが、あふれていなかったということでしょうか? ・一定の桁数(?)までは、ただ左にずらすだけ? ・あるいはこれは符号ビット? http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text/shift.htm 自分の認識 ・1ビット左にずらしたら、一番左を削除して、1番右に0を入れる ・そんな単純な話ではない?
お礼
回答ありがとうございましたー