• ベストアンサー

シフト演算の左シフトが何で72になるのでしょうか?

■やりたいこと ・100を左に1ビット(1けた)シフトさせたら2倍になることを確かめたい ■試したこと ・100を2進数へ変換 → 1100100 ・左に1ビット(1けた)シフト → 1001000 ・1001000を10進数へ変換 → 72 ■質問 ・どこで間違えているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.3

>・1ビット左にずらしたら、一番左を削除して、1番右に0を入れる たしかに一番左は消えますが、それは8ビット、16ビット、32ビットなどの境界です。 一番左が1の時、これを消したら数字としては成り立ちません。

re97
質問者

お礼

回答ありがとうございましたー

その他の回答 (3)

  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.4

>・1ビット左にずらしたら、一番左を削除して、1番右に0を入れる 桁長が決まっていればそうです。その場合「桁あふれ」が発生するので計算結果が異なります。 桁長が決まっていなければ切り捨てる必要はありません。

re97
質問者

お礼

回答ありがとうございましたー

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.2

・100を2進数へ変換 → 1100100 ・左に1ビット(1けた)シフト → [1]1001000 ←先頭の1が足りない ・1001000を10進数へ変換 → 72      ←先頭の1=128分足りない

re97
質問者

補足

回答ありがとうございます。 ・下記を見て、あふれたビットは捨てる、のだと思い左端の1を削除したのですが、あふれていなかったということでしょうか? ・一定の桁数(?)までは、ただ左にずらすだけ? ・あるいはこれは符号ビット? http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text/shift.htm 自分の認識 ・1ビット左にずらしたら、一番左を削除して、1番右に0を入れる ・そんな単純な話ではない?

  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.1

>・100を2進数へ変換 → 1100100 >・左に1ビット(1けた)シフト → 1001000 ・左に1ビット(1けた)シフト → 11001000 先頭の1がなくなってます。

re97
質問者

補足

回答ありがとうございます。 ・下記を見て、あふれたビットは捨てる、のだと思い左端の1を削除したのですが、あふれていなかったということでしょうか? ・一定の桁数(?)までは、ただ左にずらすだけ? ・あるいはこれは符号ビット? http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text/shift.htm 自分の認識 ・1ビット左にずらしたら、一番左を削除して、1番右に0を入れる ・そんな単純な話ではない?

関連するQ&A

専門家に質問してみよう