浮動小数点数 ~コンピュータでの小数(実数)の表記法~ と 2進10進 小数 の性質や変換計算について【高校 情報Ⅰ、共通テスト向け】

浮動小数点数や小数の基数変換を分かりやすく

コンピュータは2進数をもとにして演算を行います。
表現方法を考案することで、正負の整数を表現することができました。
( →補数による負の整数の表現と、減法演算… )
それだけでなく、コンピュータには小数の計算もさせたいので、小数を表し、扱うことも可能であるようになっています。
このしくみについても、高校情報 Ⅰ で学習します。
見ていくことにしましょう。

自然科学の定数によれば

例えば、高校で学習する、物質量を表すアボガドロ数
\(N_A =6.02\,\times\,10^{23}\) や、原子物理のプランク定数
\(h=6.626\,\times\,10^{-34}\) [ J・s ] 。
大きな数では、有効数字以外を「0」かどうか分からないのに0として 602000\(\dotsm\)0 と書くわけにもいきませんし、また小さな数では、
0 . 000\(\dotsm\)06626 などと書くのも煩雑ですので、

小数点位置の初期を、
上には 0でない数が ひと桁だけある位置とし、

それから 指数部において、10の累乗をかけることで、実際の桁へと調整するのです。

この表し方がいわゆる 浮動小数点法。
コンピュータが小数( 実数 )を扱うときも、この表し方を使います。詳しく見ていくことにしましょう。

浮動小数点数表現、ただし2進法で

「n進法」の「n」のことを基数と呼ぶのでしたが、上の表し方で この 基数 は、指数部の「底」になっています。
先のような通常の数では10進法なので、「10の何乗」。
それがコンピュータでは、小数も何もかも2進数で表しますので、この指数部は「2の何乗」となります。

しかしコンピュータ内でデータは、2の累乗はおろか、符号も小数点もない、ただの0と1の羅列として記憶する以外にありません。

そこで、小数を表すことにする 0と1の羅列の中に、区分と読み替える計算の規則を設けるのです。
小数を表すことにする羅列のビット総数と、各区分のビット数は決めておきます。
浮動小数点数表現 と呼び、仮数×2の累乗 の形に読み替えることを、正規化すると言います。
浮動小数点数表現を正規化するための規則は以下です。
(「状態数」「情報量」とは→ 「デジタル情報とその単位..状態数と情報量の計算」)

まず符号部、その次が指数部。「かける2の累乗」の指数になる数を表します。
指数には正も負もあり、負の数を何らかの方法で表現したいですが、指数部のビット数( 情報量 ) k として、
「2の( kー1 )乗ー1」を引いた値だと解釈するのです。
「下駄ばき表現」とか「エクセス表現」と呼ばれるものです。
「補数表現」という方法もあります( →補数による負の整数の表現と、減法演算…)が、それとはまた別の方法をここでは とっています。
最後に仮数部。「かすうぶ」と読みます。
いわゆる「有効数字」の部分で、小数点の位置は1の位が「0」以外即ち、2進法では数字「1」しかありません。
1 . 」まで確定なので、それ未満 の 数字の列 だけが、記録してあるようにします。

人間が解釈する場合、とくに指数は2進法にしておく必要もありませんので、指数部はすぐ10進法に直すのが良いでしょう。
それに比べて、仮数部は、指数部の基数が2なので、小数点位置の移動が終わってから、つまり最後に10進法に直したければ直す、でよいでしょう。
小数点を正規の位置に直したうえで、2進数を10進数に変換する方法は、この後で見ていきます。

数字の羅列の総ビット(桁)数は予め決められていて、16, 32, 64ビットなどがあります。
今の例では16ビットです。
各々の総ビット数における各区分のビット数の配分も、ほぼ決められています。
これらの数を憶える必要はありません。

総ビット数うち符号部指数部仮数部
1614または511または10
321823
6411152

10進小数と2進小数の変換計算

まずは10進小数から2進小数への変換計算から。
その前に、2進小数の位取りについて、復習しておきましょう。

無限(循環)小数になる場合は? その条件

その点、2進から10進への変換は簡単

最初のコメントをしよう

必須