アットウィキロゴ

7.実数の2進表現について


  • 実数を表現するのに、浮動小数点表記を用いる。
たとえば、3.14159という数があったとき、先頭に小数点が来るように、
    0.314159\times10^1
という、表記ができる。

 先頭に小数点が来るように位置をずらすことを、正規化(normalize)といい、この記法を浮動小数点(floating point)表記という。
 これに対して、通常の実数の 表記を、固定小数点(fixed point)表記という。
  • 浮動小数点表記により、実数は唯一の記法で表現される。


  • 浮動小数点表記のとき、上の0.314159の部分を仮数(mantissa)、10を基数(base)、1を指数(expoment)と呼ぶ。
  • 仮数部をM、基数をB、指数をEとおくと、一般の正の数は、
    \pm M\times B^E
と一意的に書ける。実数は、基数を決めておけば、仮数と指数で1通りの書き方しかない。
  • B=16のとき、IBM方式という。これは古くから汎用コンピュータで使用されている。B=2のとき、IEEE方式(アイ・トリプル・イー)という。これは最近のPCで使用されている。
B=2で表示桁が小さくなるような気がするが、後日述べる方式(隠しビット)で弱点がうまくカバーされる。

  • 10進数の16進数化について
実数の整数部分と小数部分で分けて考える。
整数部分については、10進整数を16進数に変換する要領で求めることができる。
小数部分はどうすればよいだろう。
  • 10進小数の場合で考えてみよう。
たとえば、0.456の小数第1位の数「4」はどのようにしたら得られるであろうか?

答えは極めて単純で、「10倍して小数点以下を切り捨てる」である。
0.456を10倍して4.56。小数点以下を切り捨てれば「4」となる。
では、小数第2位の「5」はどうだろう。
小数点以下で切り捨てられた「0.56」を10倍して小数点以下を切り捨てれば、「5」は得られる。

以上をまとめると、

実数を16進数にする方法

① 実数を、整数部と小数以下部に分ける。
② 整数部は、前に述べた方法で16進数にする。
③ 小数以下部は、以下のようにして変換する。
 まず、小数以下部の数を16倍する。このとき整数部に出た数が小数第1位の数である。
 次に、また小数以下部を取り16倍する。このとき整数部に出た数が小数第2位の数である。
④ 以下、この操作を繰り返す。

【例題】いま、B=16とする。このとき、234.90625を16進数の浮動小数点表記に直せ。

(解答)まず、整数部分は、
    234÷16=14...10
     14÷16=0...14 
であるから、整数部分は「EA」となる。
 小数部分は、0.90625であり、この部分は上の手順に従って変換する。すなわち、
   0.90625×16=14.5
   0.5×16=8.0
である。ゆえに、小数部分は0.E8_{(16)}となる。
 以上をあわせて、234.90625=EA.E8=0.EAE8\times16^2 となる。
 ゆえに、M=0.EAE8E=2である。  ■

問題 B=16として、次の実数を16進数の浮動小数点表記に直せ。

 (1).124.65625     (2).314.16     (3).0.1

(解答)
 (1) M=0.7CA8E=2
 (2) M=0.13A\dot{2}8F5\dot{C}E=3
 (3) M=0.1\dot{9}E=0   上付きドットは循環小数を表す。  ■

最終更新:2010年11月10日 18:44