★小数の表現3★


小数の表現2」では、2進数での小数の扱いについて書きました。

このコラムでは、コンピュータ内部で実際に使われている「浮動小数点」について説明します。

浮動小数点の基本的な考え方は「小数の表現」で書きましたが、もう一度書きます。


10進数「+123.4」という数値があったとします。

これを「浮動小数点」形式で表現しなおすと、

  +123.4 × 10 の 0乗

※0乗はすべて1となります。(なぜ?と思った方はこちらを)

となります。

  +の部分を「符号」

  123.4の部分を「仮数」

  10の部分を「基数」

  0乗の部分を「指数」

といいます。

  「符号」「仮数」×「基数」の「指数」乗

という表現形式です。

「+123.4」という表現形式も「+123.4×10の0乗」という表現形式も同じ数値を表しています。

このように書いても同じです。


  +12.34 × 10 の 1乗
  +1234.0 × 10 の −1乗

「仮数」の小数点を動かし、それにあわせて「指数」を変化させることで、「数値」としては同一の値を表現しています。

これを利用することにより、少ない桁数で大きい数や小さい数が表現できるようになるのです。

小数の表現」に書きましたが、「固定小数点」よりも少ない桁数で同じ数が表現できます。

では、コンピュータ内部でどのように利用しているのかを見てみます。


まずは、分かりやすいように10進数で考えます。

上の「+123.4」を次のように変形させていきます。

  +123.4  × 10 の 0乗
  +12.34  × 10 の 1乗
  +1.234  × 10 の 2乗
  +0.1234 × 10 の 3乗

「0.?」というところまで変形したら終わりです。

最初から「0.?」となっている数値はどうでしょう。

10進数「+0.005」であれば次のように変形します。

  +0.005 × 10 の  0乗
  +0.05  × 10 の −1乗
  +0.5   × 10 の −2乗

ここで終わりです。

なぜ、「0.?」という形にするかというと、「全ての仮数が0.?という形になれば、0.という部分は常に同じですから、無視できる」からです。

「0.」という部分を書かなくても良いのであれば「より少ない桁数で数が表現」できます。


人間は普段10進数を使っていますから、「10」という「基数」も無視します。

すると、「+123.4」という数値を保存しておくためには、

  「符号」の「+」

  「仮数」の「1234」

  「指数」の「3」

さえ覚えておけば良いことになります。

「0.」と「10」はどの数でも同じですから、

「符号」「0.」「仮数」×「10」の「指数」乗

という計算で元の数「+123.4」が分かるわけです。

コンピュータに数を記憶させるには変数が使われます。

変数に格納できる数値は「有限」ですので、上手く利用しなければ大きな数や小さな数が扱えません。

そこで、上のような方法が考えられたのです。

次は、いよいよ2進数で考えてみましょう。

小数の表現4」へ進みましょう。


ブラウザの戻るボタンで戻ってください。