アプリ版:「スタンプのみでお礼する」機能のリリースについて

浮動小数点について勉強していますが、本を見てもよくわかりません。

「イクセス表記とは、本来8ビットで表現できる値は0~255であるのに対し、元の値に127を加算することにより、-127~128までの表現を可能としています。つまり、Eが0の場合は-127を、Eが127の場合は0を、Eがすべて1の場合は128を示しています。」(日経BP社)

とありましたが、
●127を加算したら、なぜ-127~128か?このマイナスはどうしてでてくるのか?

何か、例をあげて教えてもらえればうれしいです。
よろしくお願いします。

A 回答 (3件)

>本来8ビットで表現できる値は0~255


------------------------
11111111 = +255
11111110 = +254
……
10000001 = +129
10000000 = +128
01111111 = +127
01111110 = +126
……
00000001 = +1
00000000 = 0
------------------------

>イクセス表現とは、元の値に127(01111111)を加算
------------------------
11111111 = +128 >Eがすべて1の場合は128を
11111110 = +127
……
10000001 = +2
10000000 = +1
01111111 = 0 >つまりEが127の場合は0を
01111110 = -1
……
00000001 = -126
00000000 = -127 >Eが0の場合は-127を、
------------------------

ということで,8ビット=256通りのパターンに
どの数値に対応づけているかが違うわけです。

符号なし固定小数点数では,
(11111111)~(00000000)に +255~0を対応。

イクセス127のゲタばき表現では,
(11111111)~(00000000)に +128~-127を対応。※

ちなみに,符号あり2の補数表現では,
(01111111)~(00000000)に +127~0,
(11111111)~(10000000)に -1~-128となります。

(※ celtisさんご紹介のURLに詳細がありますが,
IEEE 754 では指数部がオール1・オール0
の数を,特殊な数に対応づけています。)


>ビット反転+1よりも、127加算するほうが単純
------------------------
仮数に登場する負の数の表現には「2の補数」を使う意味があるけれど,
指数に登場する負の数には補数を使う意味がないということですよね。

指数の大きさを合わせた後の仮数同士の計算は,
(+5)+(-3)=(+2)
でよいから,「補数の加算,で減算を実現」できる2の補数の意味がある。

でも,(aの5乗)+(aの-3乗)のような異なる指数の計算では,
指数をそのまま加減算してもダメですからね。
------------------------
    • good
    • 1
この回答へのお礼

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

お礼日時:2007/02/12 11:36

指数部の表記を単純化するためでしょうね。


2の補数を使用すると指数部のトップビット(左端のビット)が符号を表しますが、127を加算する(バイアスもしくは下駄履きとも表現する)ことで見かけ上は正の整数で表すことができます。

「ビット反転+1」するよりも、単に127加算するほうが単純ですから。

http://docs.hp.com/ja/B3906-90007/ch02s02.html
    • good
    • 1
この回答へのお礼

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

お礼日時:2007/02/12 11:37

> ●127を加算したら、なぜ-127~128か?


> このマイナスはどうしてでてくるのか?

127を加算した結果が -127~128 になるのではなく,
元の値 (-127~128) に127を加算することにより,
8ビット無符号整数 E=0~255 にするのです.
だから元の値は E-127 です.
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/02/12 11:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!