戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2012年 春期 午後 問01


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

(1) の形で表記される浮動小数点数を、図1に示す32ビット単精度浮動小数点形式(以下、単精度表現という)で表現する。ここで、αとβは次の条件を満たすものとする。  α = 0、又は 1 ≦ |α| < 2  −126 ≦ β ≦ 127
基本情報技術者試験(平成24年 午後 問1 図1)
 ① 符号部(ビット番号31)   αの値が正のとき0、負のとき1が入る。  ② 指数部(ビット番号30〜23)   βの値に127を加えた値が2進数で入る。  ③ 仮数部(ビット番号22〜0)   |α|の整数部分1を省略し、残りの小数部分が、ビット番号22に小数第1位が来るような2進数で入る。   ただし、αの値が0の場合、符号部、指数部、仮数部ともに0とする。
(2) 例えば、10進数の0.75を2進数で表すと、となる。これはと表記でき、単精度表現では、図2のとおり、符号部は、指数部は−1に127を加えてとなり、仮数部はの小数部分が入るので、となる。ここで、00…0は0が連続していることを表す。
基本情報技術者試験(平成24年 午後 問1 図2)

設問1:

問題文を見る
 次の単精度表現が表す数値として正しい答えを、解答群の中から選べ。
基本情報技術者試験(平成24年 午後 問1 設問1)
解答群  ア:3×  イ:3×  ウ:3×  エ:3×  オ:11×  カ:11×  キ:11×  ク:11×

模範解答

オ

解説

解答の導き方

この問題では、ビット列を「符号部」「指数部」「仮数部」に分け、それぞれから数値を読み取ります。
  1. 符号を確認します。
    ビット31は「0」です。問題文では、符号部が0なら正の数を表します。したがって、答えは正の数です。
  2. 指数部から指数の値を求めます。
    ビット30〜23は「00000101」です。これは2進数で、10進数の5です。
    問題文には「βの値に127を加えた値が2進数で入る」とあります。つまり、指数部の値は実際の指数βに127を加えた値です。したがって、
    です。
  3. 仮数部から、1より小さい部分を読み取ります。
    ビット22から順に「0、1、1」です。問題文では、仮数部には整数部分の1を省略して、小数部分を入れると説明されています。
    2進数の小数第1位、第2位、第3位は、それぞれ 、、 の位です。そのため、仮数部は次の値になります。
    省略されている整数部分の1を戻すと、
    です。
  4. の形に当てはめます。
    、なので、
    となります。したがって、該当する選択肢はオです。

誤りやすいポイント

  • 指数部の値を、そのまま実際の指数だと思うこと
    指数部に入るのは、実際の指数に127を加えた値です。この問題では、指数部の値5から127を引いて、実際の指数を求めます。
  • 仮数部を小数部分だけで読むこと
    仮数部には整数部分の1が省略されています。仮数部が でも、 は ではなく、 です。
  • 2進数の小数の位を取り違えること
    小数点の右側は、左から順に 、、 の位です。この問題では、最初の桁が0なので、値は です。

FAQ

Q:指数部の5は、なぜ実際の指数ではないのですか?
A:単精度表現では、指数部に実際の指数βではなく、βに127を加えた値を入れる決まりだからです。このため、実際の指数を求めるときは127を引きます。
Q:仮数部の先頭にある1は、なぜビット列に書かれていないのですか?
A:問題文の形式では、 の整数部分の1を省略する決まりだからです。仮数部から読み取った小数部分に、整数部分の1を加えてを求めます。
Q:最後に指数がになるのはなぜですか?
A:なので、元の指数にを足します。したがって、です。

関連キーワード: 浮動小数点数、単精度浮動小数点形式、符号部、指数部、仮数部

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

 次の記述中のに入れる正しい答えを、解答群の中から選べ。    二つの浮動小数点数AとBの減算と乗算を行う。
基本情報技術者試験(平成24年 午後 問1 Aの単精度表現・Bの単精度表現)
(1) 減算A − Bを、次の手順①〜③で行う。  ① 指数部の値を大きい方に合わせる。Aがであることから、Bを(a)とする。  ② 減算を行う。   ((1.01) − (a)) × = (1.0) × 2のb乗  ③ ②の結果を単精度表現する。その結果はcとなる。
(2) 乗算A × Bの結果は(d) × となる。   aに関する解答群  ア:0.011  イ:0.101  ウ:0.11  エ:1.01  オ:1.1   bに関する解答群  ア:3  イ:4  ウ:5  エ:6  オ:131  カ:132   cに関する解答群 基本情報技術者試験(平成24年 午後 問1 設問2 cに関する解答群)
dに関する解答群  ア:1.0  イ:1.11  ウ:1.1101  エ:1.111  オ:1.1111

模範解答

a:ウ、b:イ、c:イ、d:エ

解説

解答の導き方

浮動小数点数は、数値を「仮数と のべき乗の積」で表す方法です。この問題では、仮数が 以上 未満になるように表します。単精度表現では、仮数の先頭の はビットに記録せず、その後の小数部分を仮数部に記録します。
まず、図のAとBから、それぞれの指数と仮数を読み取ります。
  • Aの指数部は です。これは なので、指数の値は です。仮数部の先頭のビットは なので、先頭の省略された を補うと、Aは です。
  • Bの指数部は です。これは なので、指数の値は です。仮数部の先頭のビットは なので、先頭の省略された と合わせると、Bは です。
(1) 減算
① 指数をそろえます。
問題文には「指数部の値を大きい方に合わせる」とあります。Aの指数は 、Bの指数は なので、Bを指数 の形に直します。指数を 増やすと、同じ値を保つために仮数は半分になります。
したがって、aには が入り、解答群では ウ です。
② 仮数を引き算します。
これは、十進数では と同じ計算です。よって、指数も含めた結果は次のとおりです。
最後の等式では、仮数を から にするため、指数を から に下げています。したがって、bは で、解答群では イ です。
③ 結果を単精度表現にします。
結果は正の数なので、符号部は です。指数は なので、指数部には を入れます。 は です。仮数は で、先頭の は記録しないため、仮数部はすべて になります。
つまり、符号部が 、指数部が 、仮数部がすべて の行を選びます。図の選択肢では cはイ です。
(2) 乗算
、 なので、仮数どうしを掛け、指数どうしを足します。
たとえば、、 なので、積は です。また、指数は です。
したがって、乗算の結果は となり、dは エ です。

誤りやすいポイント

  • 指数部に入っている値は、そのままの指数ではありません。問題文のとおり、指数に を加えた値が格納されています。元の指数を求めるときは、格納値から を引きます。
  • 指数をそろえるとき、指数を大きくするなら仮数は小さくします。Bの指数を から にするので、仮数は から になります。
  • 仮数部には、先頭の を記録しません。結果が の場合、仮数部には小数部分の だけが並びます。
  • 減算の答え は、単精度表現で使う形に整える必要があります。 と表すため、bは ではなく です。
  • 乗算では、仮数を掛け、指数を足します。指数を掛けたり、仮数どうしを足したりしないように注意します。

FAQ

Q: 指数部の値に を加えるのはなぜですか?
A: 指数部を、負の数を含む指数もビットで表せる形にするためです。この問題では、実際の指数を求めるときに、格納値から を引きます。
Q: 仮数部に先頭の を記録しないのはなぜですか?
A: でない数は、仮数の整数部分が になる形で表すためです。先頭が必ず になるので、そのビットを省略し、残りの小数部分を記録します。
Q: 減算のあとに仮数を整えるのはなぜですか?
A: 単精度表現では、 でない数の仮数を 以上 未満の形にするためです。 のままではこの条件に合わないので、 に直し、その分だけ指数を調整します。

関連キーワード: 浮動小数点数、単精度浮動小数点形式、指数部、仮数部、指数バイアス、2進数

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

戦国ITクイズ機能

\ せっかくなら /

基本情報技術者を
クイズ形式で学習しませんか?

クイズ画面へ遷移する→

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について