アットウィキロゴ

(3).実数の表現形式

(復習)10進実数を16進にする。
○整数部分⇒通常通り、10進を16進にする。
   与えられた数を16で割り、余りを求める。
   この操作を繰り返し、商が0になったら、下から余りを並べる。
○小数部分⇒16倍して整数部分の数を求める。
   さらに、その小数部分の数を16倍する。この操作を繰り返し、整数部分の数を上から並べる。

(例題) 2011.1027を16進実数にする。
(解答) 2011÷16=125...11
      125÷16=7...13
        7÷16=0...7    これより、整数部は、7DB
  0.1027×16=1.6432
  0.6432×16=10.2912
  0.2912×16=4.6592
  0.6592×16=10.5472
  0.5472×16=8.7552
    ・・・                  これより、小数部分は、0.1A4A8\dots 
  以上から、7DB.1A4A8\dots となる。

現在、使用されている実数表現方式には、「IBM方式」「IEEE(アイトリプルイー)方式」の2通りある。
 ①.IBM方式 ・・・  汎用コンピュータで従来使用されていた方式。
 ②.IEEE574方式 ・・・ 国際標準で制定された方式。マイクロソフト、インテル、モトローラ、などのプロセッサで採用された。現在のパソコンで幅広く使用されている。

①IBM方式の実数表現

単精度実数(4バイト)と倍精度実数(8バイト)は次のように構成される。(16進1桁=4ビット、である。)
符号 指数部 仮数部 全体
単精度実数 1ビット 7ビット(Bias=64) 24ビット(16進6桁) 4バイト(32ビット=16進8桁)
倍精度実数 1ビット 7ビット(Bias=64) 56ビット(16進14桁) 8バイト(64ビット=16進16桁)
なお、仮数部ではみ出した部分は「7捨8入」を行う。
符号部分は、「0」なら0または正の数、「1」なら負の数を表す。

(例題1) 1234.56をIBM単精度実数で表す。
(解答例)前回の問題より、B=16として正規化すると、
 1234.56=4D2.\dot{8}F5C\dot{2}=0.4D2\dot{8}F5C\dot{2}\times16^3
となり、E=3,M=0.4D2\dot{8}F5C\dot{2}\がわかる。
符号は正数だから先頭の1ビットは「0」で、E=3+64=67=1000011(64はBias。64だけずらして指数部は表現する)
ゆえに、「434D28F6」となる。(6桁目は「7捨8入」)している。

(例題2) IBM単精度実数「42C1000」を10進数で表す。
(解答例)42C1000より、先頭1バイトが42=0100\ 0010なので、符号は「0」で正。
さらに、指数部は、1000010_{(2)}=66_{(16)}より、66-64=2.
表現された数は、
  +0.C1_{(16)}\times16^2 =C1_{(16)}=12\times16+1=193
より、193である。

Bias(バイアス)について

指数部分は、2進7ビットだから、「0000000」~「1111111」まで表現できる。
これは、10進に直すと、「0」~「127」であり、このままだと、大きい数しか取り扱うことが出来ない。
これを回避するために、Bias分だけ、ずらせて表現する。
IBM形式の場合、Bias=64だから、「0」を「-64」、「127」を「63」だとして、小さい数も表現できるように対応している。
Biasがあるために、小さい数も表現できるわけである。

最終更新:2011年11月17日 08:57