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

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

解決済みの質問

情報処理の本を読んでいたんですが・・・

この画像の左下に、右算術シフトで空いたスペースに入るのは、0決めうちじゃなくて符号ビットなのです。そうじゃないと左にシフトさせたらすぐオーバーフローですよ。

と書いてあるのですが、
「そうじゃないと左にシフトさせたらすぐオーバーフローですよ」
という部分がよくわかりません。
なぜ左シフトさせたらすぐオーバーフローになるのでしょうか・・・

投稿日時 - 2015-04-14 22:53:17

QNo.8955903

すぐに回答ほしいです

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

問題にある2進数A=11100100(-28)について、正しい計算をすると、
A >>1 11110010(-14)
※Aを右に1ビットシフトした場合の正しい算術シフト

となり、正しく-28の半分の-14になりますよね。右シフトして、空いたスペースに符号ビットを入れるところを、0を入れてしまうと、と考えるとわかり易いのではないでしょうか。つまり

そうじゃないと=0決め打ち

といのがここで言いたいことだと仮定します。空いたスペースに0を入れた場合、どのような結果になるかというと

A >>1 10110010(-78)
※Aを右に1ビットシフトし、空きスペースに0を埋めた場合

このように-78になってしまいます。これを左に1ビットシフト(2倍)すると、-156となるので、8ビットで表せる-127~128の範囲を逸脱してしまうため、これを”オーバーフロー”と表現しているのだと解釈しました。

投稿日時 - 2015-04-15 14:47:30

お礼

なるほど・・・
わかりやすい解説ありがとうございました。

投稿日時 - 2015-04-20 23:09:15

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

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

回答(2)

ANo.1

オーバーフローという用語を誤用しているようです。

>そうじゃないと左にシフトさせたらすぐオーバーフローですよ。
これは無視してよいかと。

投稿日時 - 2015-04-15 01:11:47

あなたにオススメの質問