5

ウィキペディアの仮数エントリから:

2進数で作業する場合、仮数は2進数(ビット)単位の幅で特徴付けられます。正規化された数値の最上位ビットは常に1であるため、このビットは通常は格納されず、「隠しビット」と呼ばれます。コンテキストに応じて、隠しビットは仮数の幅にカウントされる場合とカウントされない場合があります。たとえば、同じIEEE 754倍精度形式は、一般に、隠しビットを含む53ビットの仮数、または隠しビットを含まない52ビットの仮数のいずれかを持つものとして説明されます。隠しビットの概念は、バイナリ表現にのみ適用されます。IEEE 754は、精度pを、暗黙の先行ビットを含む仮数の桁数であると定義しています(たとえば、倍精度形式の精度pは53です)。

正規化された数値の最上位ビットが常に1であるのはなぜですか?誰かが例を挙げて説明してもらえますか?

4

3 に答える 3

7

2進数の数字は0と1のみであり、先行ゼロは重要ではありません(たとえば、1101は00001101と同じであり、余分なゼロは何も追加しません)。したがって、他の唯一の可能性として、最上位桁は1でなければなりません。

最上位ビットは1でなければならないことがわかっているので、情報を失うことなくそれを省略できます。これは、余分な精度を得ることができるので便利です。

これの例外は数値0ですが、これは浮動小数点で(NaNや+/-無限大などの他の特殊なケースとともに)バイアスされた指数を0に設定することによって処理されます。

于 2012-08-20T13:49:29.877 に答える
5

これは完全に正しいわけではありません。0、NaN、Infinity、非正規化数などの特別な値の先頭に1はありません。

しかし、はい、それが「正気の」数である場合、仮数が1で始まるように、いつでも書き直すことができます。指数をインクリメントするだけです。同等のものは10進数にも存在します。値がゼロでない場合は、ゼロ以外の1桁で始まるように、いつでも数値を書き込むことができます。

  0.5 = 5.0 E-01
  0.05 = 5.0 E-02
  50 = 5.0 E+01
  500 = 5.0 E+02
  etcetera.

この1桁は2進数で1になるという違いがあります。したがって、保存する必要はなく、推測することができます。これは、1ビット余分な精度を購入します。浮動小数点プロセッサロジックを複雑にして計算でその1を復元するのに十分魅力的です。

于 2012-08-20T13:51:05.373 に答える
3

先行ゼロは、数値の表現に役立つ情報を持たないため、格納する必要はありません。バイナリ表現では、左端の有効数字は常にaであり、1格納する必要もありません。存在すると見なすことができます。

于 2012-08-20T13:43:00.513 に答える