これらがどのように決定されるかに興味があります:
- 単精度は次のとおりです。e は 8 ビット、残り (23 ビット) は仮数部です。
- 倍精度: e の 11 ビットと残り (52 ビット) は c の仮数で、符号は 1 ビットです。
では、仮数のビット数と e のビット数はどのように決定されるのでしょうか。これは初心者の質問だと思いますが、答えを知りたいです。
これらがどのように決定されるかに興味があります:
では、仮数のビット数と e のビット数はどのように決定されるのでしょうか。これは初心者の質問だと思いますが、答えを知りたいです。
独自の形式を開発する場合は、より高い精度またはより広い範囲が必要かどうかに応じて、指数と仮数のビット数を決定できます。IEEE-754 は一般的な用途向けに設計されているため、ほとんどの状況でどちらが優れているかを選択する必要があります
IEEE-754 より前には、さまざまな長所と短所を持つ浮動小数点形式が多数ありました。そのうちのいくつかは DEC のものです。最初に DEC は、VAX システム用に 32 ビット F および 64 ビット D フォーマットを作成しました。どちらも、プランク定数 (6.626070040 × 10 -34 ) およびアボガドロ定数を含むすべての重要な物理定数を表すために、指数に 8 ビットを使用しています。 (6.022140857 × 10 23 )。しかし、数が非常に限られており、オーバーフロー/アンダーフローが時々発生するため、指数にさらに 3 ビットを追加して、新しい 64 ビット G 形式を作成する必要があることにすぐに気付きました。Kahan 博士が IEEE-754 ドラフトを書いたとき、彼は「DEC VAX の浮動小数点は、当時としては非常に優れていたので、コピーすることを提案しました」。そのため、IEEE-754 の単精度と倍精度の指数部はそれぞれ 8 ビットと 11 ビットです。
64 ビット形式のもう 1 つの理由は、オーバーフローなしで繰り返し乗算を許可することです。
64 ビット形式の場合、主な考慮事項は範囲でした。少なくとも、2 つの 32 ビット数値の積が 64 ビット形式をオーバーフローしないようにすることが望まれていました。指数範囲の最終的な選択は、8 つの 32 ビット項の積が 64 ビット形式をオーバーフローしないことを提供します。これは、慎重なプログラマーによって指定されたものから算術演算のシーケンスを並べ替えるコンパイラを最適化するユーザーにとっては恩恵となる可能性があります。
"A Proposed Standard for Binary Floating-Point Arithmetic"、David Stephenson、IEEE Computer、Vol. 14、No. 3、1981 年 3 月、51 ~ 62 ページ
さまざまな DSP がより広いアキュムレータ レジスタを備えているのと同じ理由です。通常は 40 ビットで、32 ビット値をオーバーフローなしで 256 回加算できます。
実際、現在、IEEE-754 交換フォーマットのルールは、指数のサイズがround(4 log 2 (k)) − 13ビットであるため、型の幅を 2 倍にするたびに、指数は ~4 ビット多くなります。オーバーフローなしでより狭い型の 16 の乗算を許可します
16 ビットの半浮動小数点形式では、指数に 4 ビットのみを使用すると範囲が狭すぎ、最大値が最大の 16 ビット int 値よりもはるかに小さくなるため、代わりに 5 ビットを使用します。半浮動小数点数は主にコンピュータ グラフィックスで使用されるため、おそらく 11 ビットの精度で十分であり、より広いダイナミック レンジのためにはより大きな指数が必要です。