• ベストアンサー

シフト演算子

わたしの使用している参考書で 8ビットのデータを左に2ビットシフトすると、 1111 1111 ↓ 1111 1100 となるとあります。この場合、シフトした値が元の値の4倍になると勉強したのですが、実際には元の値より減っているように思えるのですが・・。教えてください。よろしくお願いします。

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

  • ベストアンサー
  • nitscape
  • ベストアンサー率30% (275/909)
回答No.2

8bitの演算で足し算をするとき 1111 1111 + 0000 0001 ↓ 0000 0000 と言うように数が減っています。足し算をしたのにです。これは計算結果が8bitでは表現できずにあふれたためです。 質問文の内容もそれと同じです。同じシフトを16bitデータとして処理すると 0000 0000 1111 1111 ↓ 0000 0011 1111 1100 のように桁があふれなくなります。

mori-zou
質問者

お礼

桁あふれ・・そうですよね。勉強したはずなんですけど、すぐに思いつきませんでした。勉強不足でした。ありがとうございました。

その他の回答 (1)

回答No.1

-1がー4になったので元の値より減っててもOKです。

mori-zou
質問者

お礼

なるほど!よく考えればわかりました。初心者なので2進数に慣れていないくて。ありがとうございました。

関連するQ&A