符号を気にせずに演算を実行できる整数の 2 の補数があります。これは、実装レベルで大きな助けになります。
同様に、非常に多くの浮動小数点演算がありますが、符号と大きさに依存しています。理由は何ですか?
システムのような 2 の補数がフロートに対して機能しないのはなぜですか?
符号を気にせずに演算を実行できる整数の 2 の補数があります。これは、実装レベルで大きな助けになります。
同様に、非常に多くの浮動小数点演算がありますが、符号と大きさに依存しています。理由は何ですか?
システムのような 2 の補数がフロートに対して機能しないのはなぜですか?
浮動小数点数を加算するには、整数の場合よりも多くのことを行う必要があります。指数を一致させるには、1 つの値をシフトする必要があります。符号と大きさの加算を行うための追加コストは、比較すると取るに足らないものです。
また、乗算には個別の符号ビットの方がはるかに優れていることに注意してください。符号ビットが個別に処理されるすべてのケースを処理する単一の符号なし乗算器が必要です。これを、符号を正規化するか、符号付き/符号なし乗算をサポートする必要がある 2 の補数乗算と比較してください。
浮動小数点数の標準表現を掘り下げると、実際には整数のような仮数と指数です。正規化すると、最初のビットは常に「1」になるため、整数のように言います-2つの数値の積は常に0または1で始まることがわかっています(前者の場合、結果を次のように左シフトする必要があります1 ビットの精度が失われますが、それに応じて指数を調整します)。乗算と除算は、指数で保持できるビット数をオーバーフローしない限り、正常に動作します。
一方、加算と減算では、表現を正規化された形式から指数が一致する形式に変更する必要があります。これが、大きさが大きく異なる 2 つの数値を加算したり、ほぼ同じ 2 つの数値を減算したりすると、一見奇妙な結果が得られる理由です。これが、通常、中間結果が標準の 4 バイトおよび 8 バイトの浮動小数点数および実数よりもはるかに多くの桁数の精度を持つ理由です。
ここで 2 の補数表記を使用できますか? たぶん...しかし、表現を操作するために同じルールを使用することはできませんでした.
問題を見てきた世代の専門家を信頼することに帰着すると思います。何百人もの博士号とプリンシパル エンジニアが、現在の表現が最善のアプローチであると考えているなら、私はそれらを信じなければなりません。