■ポイント重点対策 −浮動小数点表現



■浮動小数点数とその関連知識


浮動小数点数・・・

データを表現する方法の1つ。
データを正規化し符号・指数部・仮数部に分割したものをデータとする。
非常に大きな数値、小さな数値、小数点付きの実数を表現するのに有利である。

と、難しい言葉を並べたのですが、はじめは分からなくても話を進めるうちに理解できるとおもいます。
浮動小数点数を扱う形式は、コンピュータにより方法が異なるため、IEEEにより規格が提案されています。
ここでは、そのIEEE提案モデルをベースに話を進めようと思います。

IEEE (the Institure of Electrical and Electronics Engeneers inc.)

米国電気電子技術者協会
通信用バスコネクタやLANなどの標準化活動を行っている団体。
IEEEによって、計測器用インタフェースのGPIBや、LANのアクセス制御方式(CSMA/CDなど)を規格化している事も覚えておきたい。



■正規化とは・・・?


正規化・・・

小数部分があらかじめ定められた範囲内に入るように指数と小数部分を調整すること。
例えば、10進数0.0038という数字があったとする。
小数部分を0.1以上1未満の間で表すという条件のとき、0.38×10-2と表すことができます。
ここで、0.38の38の部分を仮数、10-2の−2を指数といいます。

・コンピュータは0と1の2種類の判断しかできませんから、実際の浮動小数点数の計算をする場合は2進数に変換しなければなりません。


■データの表現形式


IEEEモデルの浮動小数点数を扱うデータ表現形式には、単精度倍精度の2つがあります。
両方とも符号指数部仮数部の順の構成で、それぞれのビット数が違ってきます。

●単精度(32ビット)


●倍精度(64ビット)


IEEEでは表したい数値の小数部分の1の位が1になるように正規化をし、形式の各部分への対応を次の条件で考えます。

符号 :正を0、負を1で表す

指数部:指数に127(2進数1111111)を加えるバイアス方式

仮数部:仮数を1の位の1を取り除いたかたちで左づめに数値を入れる。
    余ったビットはすべて0で埋める。


■浮動小数点数の実例


10進数-58.875を浮動小数点数形式にする過程を考えます。
また、ただIEEEの浮動小数点数形式というと一般に32ビットの単精度ですので、こちらで考える事にします。

−−−−−■計算過程■−−−−−
@符号を除いて2進数に変換
A正規化する(「1.●×2」というかたちに)
B形式に当てはめる
   1.符号(正→0、負→1)
   2.指数部(△+01111111(10進数127))
   3.仮数部(●を左詰め、余った部分に0挿入)
−−−−−−−−−−−−−−−−


@
10進数58.875 → 2進数111010.111

A
111010.111×20 → 1.11010111×25

B
 符号・・・負の数より1
指数部・・・5→00000101 これに01111111を加算して10000100
仮数部・・・1.11010111 → 11010111 後ろに0を挿入
      11010111000000000000000

以上より、1 10000100 11010111000000000000000となります。

−−−−−−ここから下が追加(更新)部分です


■浮動小数点数の過去問題


これまでIEEEの浮動小数点数形式で説明を進めてきました。
ただ、情報処理技術者試験ではIEEEモデルそれほど扱われていないのが実状です。
例えば、正規化の際の基数が2でなく16であったり、指数部は127をプラスするのではなく2の補数表示で表したり、 またはデータ全体の大きさが32ビットで16ビットであったりと様々です。

したがって、試験問題に記載された形式に従って算出していく必要があります。
下に過去の問題例を紹介します。
現在1つしか掲載していませんが、徐々に増やしていくつもりです。

では、実際に問題を解いていきます。

@浮動小数点表示法を用いたデータの表現(Level 1)

もどる