計算機算術

10進数の1.0を、IEEE 754の単精度で表したビット列を16進数で書くとどれか。

  1. A0x00000001
  2. B0x3F000000
  3. C0x3F800000
答えと解説を見る

正解:C. 0x3F800000

1.0 = 1.0 × 2⁰ なので、符号は0、実際の指数は0で指数部は 0 + 127 = 127 = 0111 1111、仮数(先頭の1を除いた部分)はすべて0です。並べると 0 01111111 000…0 となり、4ビットずつ区切ると 0011 1111 1000 0000 … で 0x3F800000 になります。0x00000001は整数の1のビット列で、浮動小数点ではごく小さな非正規化数を表します。0x3F000000は指数部が126で、0.5を表します。

  • A. 0x00000001は整数1のビット列で、浮動小数点では非正規化数です。
  • B. 0x3F000000は指数部126で、0.5を表します。
  • C. 正しい。符号0、指数部127、仮数0で0x3F800000です。
この分野を解く 分野ページへ

計算機算術のほかの問題

  1. −6.25 を単精度に変換するとき、符号・指数部・仮数を並べたビット列を16進数で表すとどれか。
  2. 10進数の0.1を2進数の浮動小数点数で表したときの説明として正しいものはどれか。
  3. 多くのプログラミング言語で、倍精度の 0.1 + 0.2 == 0.3 という比較が偽になる理由として正しいものはどれか。
  4. IEEE 754の単精度のマシンイプシロン(1と、1の次に大きい表せる数との差)はいくらか。
  5. 単精度と倍精度の浮動小数点数で信頼できる10進数の有効桁数の目安の組み合わせとして正しいものはどれか。