平成27年秋期試験午後問題 問2

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】

問2 ハードウェア

浮動小数点数に関する次の記述を読んで,設問1~4に答えよ。

 α=0,又は1≦|α|<2を満たすα,及び-126≦β≦127を満たすβを用いて α×2β の形で表記される浮動小数点数を,図1に示す32ビット単精度浮動小数点形式の表現(以下,単精度表現という)で近似する。
pm02_1.png
  • 符号部(ビット番号31)
    αの値が正のとき 0,負のとき 1 が入る。
  • 指数部(ビット番号30~23)
    βの値に127を加えた値が2進数で入る。
  • 仮数部(ビット番号22~0)
    |α|の整数部分 1 を省略し,残りの小数部分が,ビット番号 22 に小数第1位が来るような2進数で入る。このとき,仮数部に格納できない部分については切り捨てる。
  • αの値が0の場合,符号部,指数部,仮数部ともに 0 とする。
 なお,値の記述として,単にαと記述した場合は,αは10進数表記であり,(α)n と記述した場合はαがn進数表記であることを示す。例えば,(0.101)2は 0.625 と同じ値を表す。また,00…0という表記は,0が連続していることを表す。

設問1

0.625 を単精度表現したときに指数部に入る値として正しい答えを,解答群の中から選べ。
解答群
  • (00)16
  • (7E)16
  • (7F)16
  • (FE)16
  • (FF)16
解答選択欄
  •  
  •  

解説

0.625は0.5+0.125なので2進数表記では (0.101)2 です。仮数部 0.101 の最上位ビットが整数1けた目にくるように正規化すると、1.01×2-1になります

[符号部]
 正の値なので 0

[指数部]
 指数部=β+127 なので

 指数部=-1+127=126
=(01111110)2(7E)16

[仮数部]
 0100…00

:(7E)16

設問2

次の単精度表現された数値として正しい答えを,解答群の中から選べ。
pm02_2.png
解答群
  • 0.125
  • 0.25
  • 0.375
  • 0.5
  • 0.75
  • 1.5
解答選択欄
  •  
  •  

解説

[符号部]
 0(正数)

[指数部]
 (0111110)2
=26+25+24+23+22+21
=64+32+16+8+4+2
=126

 β=126-127=-1

[仮数部]
 10…00 なので、整数部分の1を加えて 1.1

これらを組み合わせると、この単精度表現が示す浮動小数点数は「1.1×2-1」とわかります。

 1.1×2-1=(0.11)
=2-1+2-2=0.5+0.25
0.75

:0.75

設問3

次の記述中の に入れる正しい答えを,解答群の中から選べ。

 二つの浮動小数点数AとBの加算を行う。
pm02_3.png
 AとBの加算を,次の①,②の手順で行う。
  1. 指数部の値を大きい方に合わせる。Aが(1.1)2×25であることから,Bを(-(a)2)×25とする。
  2. 加算を行う。
     ((1.1)2+(-(a)2))×25=(1.1)2×2b
a に関する解答群
  • 0.001
  • 0.01
  • 0.011
  • 0.1
  • 0.11
  • 1.1
b に関する解答群
  • 3
  • 4
  • 5
  • 6
  • 130
  • 131
  • 132
解答選択欄
  • a:
  • b:
  • a=
  • b=

解説

aについて〕
pm02_5.png
[符号部]
 1(負数)

[指数部]
 (10000011)2
=27+21+20
=128+2+1
=131

 β=131-127=4

[仮数部]
 10…00 なので、整数部分の1を加えて 1.1

これらを組み合わせると、Bの単精度表現が示す浮動小数点数は「-1.1×24」とわかります。

さらに①の計算の過程で指数部をAと同じ 25 に合わせているので、

 -1.1×24-0.11×25

a=オ:0.11

bについて〕
AとBの加算を行うと次のようになります。

 1.1×25+(-0.11×25)
=(1.1-0.11)×25
=0.11×25
=1.1×24

b=イ:4

設問4

次の記述中の に入れる正しい答えを,解答群の中から選べ。

 設問3のAについてA×10の値は,次の①~③の手順で求めることができる。
  1. A×8の値を求める。
    A×8=(1.1)2×25×8=(1.1)2×25×23=(1.1)2×28
  2. A×2の値を同様に求める。
  3. ①と②の結果を加算する。
 加算結果を単精度表現すると,cになる。
c に関する解答群
  • pm02_4a.png
  • pm02_4i.png
  • pm02_4u.png
  • pm02_4e.png
  • pm02_4o.png
  • pm02_4ka.png
解答選択欄
  • c:
  • c=

解説

cについて〕
②のA×2の値を①の方法と同様に計算します。

 1.1×25×21=1.1×26

次にA×8の計算結果である「1.1×28」と上記の「1.1×26」を設問3の方法で加算します。

まず、先程と同様に 1.1×26 の指数部の値を大きいほうの 28 に揃えます。

 1.1×26=0.011×28

加算を行います。

 1.1×28+0.011×28
=(1.1+0.011)×28
=1.111×28

最後に計算結果を単精度表現に直します。

[符号部]
 0(正数)

[指数部]
 8+127=135
=(10000111)2

[仮数部]
 11100…00

したがって「ウ」が適切です。
pm02_6.png

Pagetop