- ベストアンサー
IEEE規格浮動小数点について
IEEE規格浮動小数点について聞きたいのですが、このサイト(http://docs.hp.com/ja/B3906-90007/ch02s02.html)最大非正規化で0x007fffff=2^-149 * (2^23 - 1)のことなんですけど、なぜ2^24-1ではなく2^23-1なのかわかりせん。誰かわかりやすい説明よろしくお願いします。
- みんなの回答 (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 となります。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
まず基本から抑えると, 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 です.
お礼
わかりやすい回答ありがとうございました。
- goosyu
- ベストアンサー率58% (36/62)
お礼
とてもわかりやすい説明ありがとうございました。