浮動小数点

基本的には符号部、指数部、仮数部の3フレーズで表現

浮動小数点の表現は10進数では

ここで
符号S +正の数(省略できる)、−負の数
仮数A 適当でいいが一定のルールはある。
基数B 指数表現の底(てい)にあたり、10進数では B = 10。
指数E 整数
 BE を合わせて指数部

 �� 10ケタの10進整数 1250000000 を
 1.25×109 と書いたり 、
�� 始めから0が8個連続する10進小数 −0.0000000125 を
 −1.25×10-8 と表現することがあります。  
 このように、± 型の表示を浮動 (ふどう)小数点といいます。
 特に �� のように絶対値(注1ぜったいち)が非常に大きな数や、�� のように非常に小さな数に対して効果的な(分かりやすい)表現です。


は2進数の浮動小数点として OKか?
 

 の型を2進数に応用してみよう。
10 1000 を2進数とするとき、
 10 1000 =  1. 01 × 25 
で浮動小数点はよろしいか。

残念だが駄目(×)です。 2進数 1.01に 2 5 を掛ける(つまり32倍する)ことは、5 ビットだけ左シフトすることでもあり、10 1000 と等しい。従って等式としては正しい。
しかし、右辺は、0 , 1 以外の数 2 , 5 を用いており、2進表記とは言えない。では、2→10(2) ,  5→101(2) より、
 1.01×10 101 と変えれば解決するのであろうか。  否(no)である。大体、2進の負の数には補数を用い、マイナス符号(−)は用いないのです。

2進数の浮動小数点(その1)

情報処理試験出題方式(勝手に名付けました?!)

過去の情報処理試験に出てくる2進数の浮動小数点に関する問題には、 コンピュータに用いているIEEE方式とは異なる浮動小数点のルールを何年も続けて使用しています。この表現方法を見ましょう。
直接に平成18年出題の問題から取り上げます。
<<問題>> 数値を図に示す16ビットの浮動小数点形式で表すとき,10進数0.25を正規化した表現はどれか。ここでの正規化は, 仮数部の最上位けたが0にならないように指数部と仮数部を調節する操作とする。


10進数などの浮動小数点の表現
と語句の対応は同じですから参考にします。
符号部S 、基数2(決まっているからビット列中に書かない) および ビット列(BOX)の配列順序(じゅんばん)は IEEE方式 も同じです。大きな違いは 指数部で負数を2の補数で表すところでしょう。正規化は仮数部が始めから0がダラダラ連続(^○^)することがないように有効ケタを増やす操作です。IEEE方式も独自の正規化を行っています。


 <<解答>>説明です。
10進 0.25 は 2進数で 0. 01。これを
正規化すると 0. 1×2 -1(等式として)。
指数部eの4ビットは -1を2の補数表現で、0001→ (反転)1110 →(1をたす)  1111。
仮数部 f 11ビットは 100 0000 0000。 
符号部1ビットは正の数でS=0。
従って
 0 / 1111 / 100 0000 0000 (答ウ)。

2進数の浮動小数点(その2←主流です)

IEEE754方式

現在のコンピュータ(パソコン)は殆どがIEEE754規格(きかく)の演算装置(けいさんするところ)を持っています。 まさに浮動小数点の主流の座にあります。まあ知らなくても特に不都合というわけでもありません。 ここではその中の単精度(たんせいど)形式(注2) の浮動小数点について述べましょう。


 
 正規化
 仮数を1以上2未満(みまん)とする。

 仮数 整数部分の1は省略する。
 指数 127をたす(ゲタをはかす)。
 符号 正数⇒0  負数⇒1  

<<例>> 10進の 0.  625 を単精度形式の浮動小数点で表わすと次のようになる。
0/0111 1110/010 0000 0000 0000 0000 0000 
10進数などの浮動小数点の表現
と語句の対応は同じですから参考にします。
基数は常に2なので、特に記さない。
指数、仮数は2進表記とする。
ゲタの 127は2進で、0111 1111
あるいは
2 7 −1= 1000 0000 − 1 と見れば納得(よい)でしょう。 
例について
0. 625は2進で0. 101。正規化 により
1. 01×2 -1。
指数部は −1+127 = 126 → 0111 1110 。
仮数部は 1を捨て、小数部分 010 。
以下0 で埋め23 ビットとする。符号部 0 。


問題

(1)情報処理試験出題方式(自称)による浮動小数点です。次の表現は10進数でそれぞれ幾らですか。 上の説明の具体例の答え群の中の、不正解の3個を取り出しています。 参考にして下さい。
答えは次のページです。



(2)IEEE方式による浮動小数点です。次の10進数をIEEE方式による2進数の浮動小数点で表示して下さい。
単精度形式です。

  � �5.75     �◆�- 80


注1数の絶対値とは 、その数から符号を取り去ったもの。たとえば +5 の絶対値、 − 5 の絶対値は いずれも 5 である。数学の教科書などには A の絶対値を記号|A|で表し、A≧0のとき|A|=A 、A<0のとき|A|=−A。 などの説明があるが、たいへん難しいと思います。
注2  32ビット列で表す単精度形式の他に、IEEE方式では64ビット列で表す 倍精度(ばいせいど)形式という浮動小数点も用意されている。 相違点(ちがうこと)は、� ”箙翩� 1ビット、指数部  11ビット、仮数部 52ビットの合わせて 64ビットで表示する。 �◆〇愎�部のゲタはきは 1023をたす。 の2点です。ゲタ 1023 は2進の 11 1111 1111 または 210 −1 = 100 0000 0000 ー1 と考えれば納得ですか。

前回の答え

 NOT回路は1→0、 0→1 と反転します。SW-AがON (1)のとき、NOT回路を奇数個を通るとOFF(0)、偶数個を通るとON(1) です。従って6個(偶数個)のNOT回路を通り抜けたLEDのところはON(1) つまり点灯です。