back

浮動小数点数


IEEE形式の浮動小数点数

  仮数と指数で表現する。
  固定小数点数より広範囲な数値を表現できる。

(1ビット)   E(8ビット)            M(23ビット)    

  ↓          ↓          ↓
仮数部の符号   指数部       仮数部


             10進数        2進数
              ↑           ↑
(-1)^×2^(-127)×(1.
          
            ↓ 
                        ここの最上位が1になるように
                        桁を合わせることを
正規化という


★★★宿題:二種向け★(2000/1/27)

 浮動小数点表示において、仮数部の絶対値の最上位けたが0以外になるように
けた合わせする操作はどれか。

 ア 切上げ

 イ 切捨て

 ウ けた上げ

 エ 正規化


■解答■
  二種午前平成11年秋問5
>ア 切上げ
>        端数を1として上に位に加えること
>イ 切捨て
>    半端な数を省略すること
>ウ けた上げ
>    位をあげること
>エ 正規化
>    浮動小数点において、仮数をあらかじめ
>    決められた範囲に収まるように仮数部と
>    指数部に調整すること。
>
> 新星出版社の情報処理用語事典と
> 集英社の常用国語事典を参考にしました。

 どうもありがとうございました。

> データベースの正規化のほかに、浮動小数点の正規化。頭の中でまじって
> 覚えていたようです。今回調べてはっきりしました。

 どうもありがとうございました。

> 正規化とは
>浮動小数点同時の演算の結果、仮数部の上位ビットがゼロになることがある。
>このような場合には、仮数部の最上位ビットが1になるまで桁上げを行う。
>けた上げを行ったビット数だけ、指数を減ずる。このような作業を正規化と呼ぶ。
>
>参考:http://www.nana.or.jp/~kuyihe/siken.htm
>浮動小数点の表現の仕方?に付いても解りやすい説明がありました

 どうもありがとうございました。

> ア 切上げ :(例)15を一の位で切上げ
>                   →20になる
> イ 切捨て :(例)15を一の位で切捨て
>                   →10になる
> ウ けた上げ:(例)15+15の計算
>                   →一の位だけみると5+5=10なので, 一の位は0で, 十の位に1
>                     だけ桁上がりする
> エ 正規化 :(例)0.15*10^2
>                   →数値を例のように表現した時,仮数を例の0.15のようにす
>           る(仮数部の絶対値の最上位けたが0以外になるようにけた
>           合わせする)操作

 どうもありがとうございました。

>  コンピュータ内部で数値を扱う場合,絶対値の大小にかかわらず,
> 有効桁数の範囲での表現。実数の表現に用いる。
>  一般的には符号部と仮数部M,指数部e,底Bを使用し,M×B^e
> で表現する。
> ・M・・・仮数部
> ・B・・・基数部(=2または16)
> ・e・・・指数部
>       ↓
>    2の補数で表すものや実際に127を加えて表すものなどがある。 
> 符号部,指数部,仮数部からなる。
> +--------+--------------+--------------+
> | 符号部 |     指数部      |     仮数部     |
> +--------+--------------+--------------+
>
> 学研付録「まぎらわしい類語・対語対照辞典」P.6より要約

 どうもありがとうございました。


★★★宿題:二種向け★(2000/5/15)

 数値を 16 ビットの浮動小数点で,図に示す形式で表す。10 進数 0.375 を正
規化した表現はどれか。ここでの正規化は,仮数部の最上位けたが 0 にならな
いように指数部と仮数部を調節する操作である。

     4 ビット
1 ビット │     11 ビット
 ↓   ↓      ↓

S  E M

             ▲
      小数点の位置

 S :仮数部の符号( 0:正,1:負)
 E :指数部( 2 を基数とし,負数は 2 の補数で表現)
 M :仮数部( 2 進数 絶対値表示)

0 0001 11000000000

イ 

0 1001 11000000000

0 1111 11000000000

エ 

1 0001 11000000000

 


(解答例)

0.375(10)は2進数で0.011(2)で表現できる。
問題より仮数部の最上位けたが0にならないようにするには
0.011(2)を左に1ビットシフトすることになる

0.011(2)=0.11×2^(-1)
       ↑   ↑
     仮数部  指数部
よって

0 1111 11000000000

  ↑   ↑
  |   0.11を表現
 (-1)を表現
負数は2の補数で表現

正規化の要件を把握しておかないと解けませんね。