質問: 浮動小数点 浮動小数点について勉強していますが、本を見てもよくわかりません。 「イクセス表記とは、本来8ビットで表現できる値は0~255であるのに対し、元の値に127を加算することにより、-127~128までの表現を可能としています。つまり、eが0の場合は-127を、eが127の場合は0を、eがすべて1の場合は128を示しています。」(日経bp社) とありましたが、 ●127を加算したら、なぜ-127~128か?このマイナスはどうしてでてくるのか? 何か、例をあげて教えてもらえればうれしいです。 よろしくお願いします。
回答: >本来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乗)のような異なる指数の計算では, 指数をそのまま加減算してもダメですからね。 ------------------------