86054


IEEE754単精度浮動小数のバイアスについてです。  
指数表現が-126から127となる理由などはあるのでしょうか。-127〜126としなかったのには理由があるものだと思っていますが分かりません。ご教授ください。

> 符号ビットは表現する数値の符号（正負）を示す。指数部は 8 ビットで、符号なし整数として見た場合は 0 から 255 の値をとり、0
> の時はゼロか非正規化数であることを、1 から 254 の時は -127 のゲタ履き（バイアス付き）表現で -126 から 127 の指数を、255
> の時は無限大または NaN であることを示す。  
>
> [Wikipedia](https://ja.m.wikipedia.org/wiki/%E5%8D%98%E7%B2%BE%E5%BA%A6%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0)


CC BY-SA 4.0
2022-02-01T01:15:14.977
86051
2022-02-01T06:16:11.363
34792
question
javascript
IEEE754単精度浮動小数のバイアスについて


[WikiPedia の IEEE754 解説](https://ja.wikipedia.org/wiki/IEEE_754) の
32ビット単精度の交換形式 の箇所によると

指数部も２の補数にすると仮数部と指数部の両方に符号が入り込むので大小比較が複雑になるから、指数部は表現上「正数」としておく旨の記述があります。

よく使われる＝計算回路の設計上での注意点がよく知られている＝回路にバグが入りにくい、ということなので標準的なエクセスN形式 (8bit)
を採用すると、オフセット数値はほぼ自動で 127
ということになります（ほかの数値を選ぶのは非標準＝回路設計上避けられたはずのバグを招く可能性あり＝採用しづらい）。バイナリ記述上 0 および 255
には別な意味をもたせたので、そうすると指数の有効な値としては自動的に -126 から 127 にならざるを得ないということでしょう。

* * *

エクセスN形式 [WikiPedia
の解説](https://ja.wikipedia.org/wiki/%E7%AC%A6%E5%8F%B7%E4%BB%98%E6%95%B0%E5%80%A4%E8%A1%A8%E7%8F%BE)とは

  * 意味論的数値と表記上の数値を、ある数値 N だけ（バイアスとか下駄ばき分とか言う）ずらす
  * `n` ビット値に対して `2**(n-1) -1` の差を使うことが多い
  * この例では 8bit 値だから `2**7-1=127` の差をつける
  * 表記上の値を正数にしたいのだから 
    * 意味論→表記の際にはプラスする
    * 表記→意味論の際にはマイナスする

なので IEEE754 の指数部においては

  * 表記上の値 `1` は意味 `1-127 = -126` になる
  * 表記上の値 `254` は意味 `254-127 = +127` になる
  * 表記上の値 `0` と `255` (全ビットが 0 または 1 な値）は特別扱いする、つまり指数とみなさない

ということで [-126, +127] の範囲になるわけです（ハードウエア上の演算回路の設計・実装でバグを出さないための知恵といえるでしょう）


CC BY-SA 4.0
2022-02-01T02:23:01.873
86054
2022-02-01T06:16:11.363
2022-02-01T06:16:11.363
8589
8589
86051
answer