• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:この問題がわかりません)

基本情報試験の過去問解説:負数を2の補数で表す 16 ビットの符号付き固定小数点数の最小値を求める方法

このQ&Aのポイント
  • 基本情報試験の過去問に出題された、「負数を2の補数で表す 16 ビットの符号付き固定小数点数の最小値」を求める問題について解説します。
  • 問題の答えは、2の補数という方法で負数を表現するため、16 ビットの符号付き固定小数点数の最小値は「イ 8000」です。
  • 解答過程では、ア~エの16進数を2進数に変換し、その2進数を10進数に変換して絶対値を求める必要があります。イの場合は2進数の最上位ビットが1であるため、2の補数表現になります。

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

  • ベストアンサー
  • info22
  • ベストアンサー率55% (2225/4034)
回答No.2

16ビットの2進数は、符号なしの正の2進数では 最小値が(0000 0000 0000 0000)=0, 最大値が(1111 1111 1111 1111)=2^(16)-1=65535 です。(ビットは2進数の1桁のこと) 符号付2進数の場合は、符号なしの2進数の下半分 0000 0000 0000 0000~0111 1111 1111 1111 = 0~(2^15)-1 これを正の数とします。 上半分を負の数に割り当てます(つまり最上位が1の2進数を負数に割り当てます)。つまり先頭ビットは1ですから質問のイ、ウ、エが負数ということです。では個々の負数はどう表すかが問題ですが。 2の補数法では負数は、符号なし2進数と見なして、同じ大きさの正の数に加えて 2^16=1 0000 0000 0000 0000 = 65536 となる数に対応させます。また 正の整数=32767=(0111 1111 1111 1111)=7FFF 負の最大整数=-32768=(1 0000 0000 0000 0000)-(0111 1111 1111 1111) = (1000 0000 0000 0000)=8000 となります。つまり先頭の桁(ビット)は正負の符号と言うことです。 次に10進と2進の基数変換は参考URLをご覧下さい。

参考URL:
http://www.crew.sfc.keio.ac.jp/projects/2001ipl-text/info-2001-4/text-b/bitframe.htm
benchie8
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>これでは、イとウ、エが-の符合になっていますが、なぜそうなるのか そういう定義なんスけど。 まぁ、1 = 0000....01 に 1111....11 を足せば、オーバーフローして 0 になるから -1 = 1111....11 とするとハードウェア的に作りが簡単になる。 のかな?

関連するQ&A