• ベストアンサー

ビットについて基本情報技術者試験でわからない問題があります

ある16ビットのデータを左に1ビットけた移動すると、あふれが生じ、得られた値は16進数で579Aとなった。元の値を16進数で表したものはどれか。 ア 2BCD イ 2F34 ウ ABCD エ AF34 答え ウ 解説には 579A を2進数に直し、右に1ビットけた移動、あふれが生じた分の先頭ビットを1とすると・・ とありますが、なぜ、勝手に先頭ビットを1としていいのかわかりません。

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

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.4

左に1bitシフトした結果、579A 0101 0111 1001 1010 元に戻すのは右に1bit シフトする 0010 1011 1100 1101 あふれた先頭ビットを戻す。 1010 1011 1100 1101 ABCD です。 (桁)あふれがあった→意味のある変化があった→もう少し専門的にいうとキャリーを生じた ということは、元の先頭ビット(MSB)が1だったということです。勝手に先頭ビットを1にしているわけではありません。「あふれが生じ」という意味が先頭ビットが1ですよといっているのです。

その他の回答 (3)

  • bug_bug
  • ベストアンサー率78% (36/46)
回答No.3

"桁あふれ(オーバーフロー)"とは扱える数値の最大値を超えることを指します. 仮に回答が(ア)だとした場合, 1bit左シフトを行っても16bitで表記できる値に収まるため, "桁あふれした"とは言いません. 問題文に"あふれが生じ"とありますので, 1bit左シフトしてあふれが発生するためには, 元の値のMSB(先頭ビット)は"1"であることが必須となります.

参考URL:
http://e-words.jp/w/E6A181E38182E381B5E3828C.html
noname#119957
noname#119957
回答No.2

579A これを16ビットで現すと、 0101 0111 1001 1010 右に1桁SHIFTすると 0010 1011 1100 1101 これをHEXで現すと 答え 2BCD  ですね。 溢れは右の4ビットの先頭に移動していますね。 何か変ですか?

fitsfits
質問者

補足

文が足りていませんでした。 答えは ウ の ABCD となっています。解説には、右に1桁シフトすると 0010 1011 1100 1101 となり、あふれが生じた分の先頭ビットを1とすると 1010 1011 1100 1101 となり答えは ABCD となります。 と書いてあります。なぜ、先頭部が0010ではなく、先頭ビットに勝手に1を補い1010としているのかが理解できないのです。

  • kaz-a
  • ベストアンサー率27% (132/480)
回答No.1

>先頭ビットを1としていいのかわかりません。 先頭が0でも桁あふれするのでしょうか?

関連するQ&A