重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

IEEE規格浮動小数点について聞きたいのですが、このサイト(http://docs.hp.com/ja/B3906-90007/ch02s02.html)最大非正規化で0x007fffff=2^-149 * (2^23 - 1)のことなんですけど、なぜ2^24-1ではなく2^23-1なのかわかりせん。誰かわかりやすい説明よろしくお願いします。

A 回答 (3件)

単精度で「バイナリで0x007fffff」の場合、非正規化数なので「仮数部はそのままの値の0x7fffffで計算」します。



仮数部の
0x7fffff

0x1+0x2+0x4+…+0x100000+0x200000+0x400000
つまり
2^0+2^1+2^2+…+2^20+2^21+2^22
なので
2^23-1
と等しいです。

もっと簡単に言えば
0x7fffff=0x800000-1
であり
0x800000=2^23
なので
0x7fffff=0x800000-1=2^23-1
となります。
    • good
    • 0
この回答へのお礼

とてもわかりやすい説明ありがとうございました。

お礼日時:2009/08/06 15:11

まず基本から抑えると, IEEE単精度浮動小数では


・符号 (s): 1ビット
・指数部 (e): 8ビット (バイアス 127)
・有効数字部 (m): 23ビット
で, 正規化数 (0 < e < 255) ではこの値を
(-1)^s * 2^(e-127) * (1 + m/2^23)
と解釈します.
これに対し, 非正規化数 (e = 0 かつ m ≠ 0) では
(-1)^s * 2^-126 * m/2^23
と解釈することになっています (正規化数では有効数字部の整数部「1」が省略されているが, 非正規化数では有効数字部をそのまま解釈する). なので, 非正規化数として表現する最大の値は m のすべてのビットが 1 のときであり, これで表される数は
2^-126 * (2^23-1)/2^23
です.

参考URL:http://ja.wikipedia.org/wiki/IEEE_754
    • good
    • 0
この回答へのお礼

わかりやすい回答ありがとうございました。

お礼日時:2009/08/06 15:05

IEEE 単精度形式は32ビット構成のようですがその構成は


符号部1ビット+指数部8ビット+仮数部23ビット=合計32ビットです。
仮数部が23ビットの為,2^23-1となっています。
「IEEE規格浮動小数点について」の回答画像1
    • good
    • 0
この回答へのお礼

なんとなくわかりました。回答ありがとうございした。

お礼日時:2009/08/06 14:59

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