みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

■やりたいこと
・100を左に1ビット(1けた)シフトさせたら2倍になることを確かめたい

■試したこと
・100を2進数へ変換 → 1100100
・左に1ビット(1けた)シフト → 1001000
・1001000を10進数へ変換 → 72

■質問
・どこで間違えているのでしょうか?

投稿日時 - 2014-05-10 11:37:11

QNo.8588941

暇なときに回答ください

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

>・1ビット左にずらしたら、一番左を削除して、1番右に0を入れる

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

投稿日時 - 2014-05-11 08:23:54

お礼

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

投稿日時 - 2014-06-08 11:32:17

このQ&Aは役に立ちましたか?

11人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

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

桁長が決まっていなければ切り捨てる必要はありません。

投稿日時 - 2014-05-11 13:09:34

お礼

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

投稿日時 - 2014-06-08 11:32:34

ANo.2

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

投稿日時 - 2014-05-10 11:46:14

補足

回答ありがとうございます。

・下記を見て、あふれたビットは捨てる、のだと思い左端の1を削除したのですが、あふれていなかったということでしょうか?
・一定の桁数(?)までは、ただ左にずらすだけ?
・あるいはこれは符号ビット?
http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text/shift.htm

自分の認識
・1ビット左にずらしたら、一番左を削除して、1番右に0を入れる
・そんな単純な話ではない?

投稿日時 - 2014-05-11 08:08:03

ANo.1

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

投稿日時 - 2014-05-10 11:43:42

補足

回答ありがとうございます。

・下記を見て、あふれたビットは捨てる、のだと思い左端の1を削除したのですが、あふれていなかったということでしょうか?
・一定の桁数(?)までは、ただ左にずらすだけ?
・あるいはこれは符号ビット?
http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text/shift.htm

自分の認識
・1ビット左にずらしたら、一番左を削除して、1番右に0を入れる
・そんな単純な話ではない?

投稿日時 - 2014-05-11 08:07:40

あなたにオススメの質問