1

次の形式に従う次の 2 つの浮動小数点数を加算、減算、および/または乗算したいとします。

1 ビット符号

3 ビット指数 (バイアス 3)

仮数6ビット

誰かが私がそれを行う方法を簡単に説明できますか? 役立つリソースをオンラインで検索してみましたが、あまりにも直感的なものを見つけることができませんでした. ただし、手順は一般的に非常に簡単であると考えられています。例として、3 つの操作を実行したい 2 つの数値を次に示します。

0 110 010001

1 010 010000

4

1 に答える 1

3

まず、仮数エンコーディングを取得し、その前に「1.」を付けて、符号ビットによって決定された符号を付けて結果を書き込みます。したがって、例の数値については、次のようになります。

+1.010001
-1.010000

ただし、これらは指数が異なるため、スケールが異なります。2 番目の指数は、最初の指数よりも 4 小さい (110 2に対して010 2 )。したがって、4 ビット右にシフトします。

+1.010001
- .0001010000

これで、両方の仮数が同じスケール (指数 110 2 ) になったので、2 進数で通常の算術演算を実行できます。

+1.010001
- .0001010000
_____________
+1.0011000000

次に、仮数を使用可能なビット (7) に丸めます。この場合、末尾のビットはゼロであるため、丸めによって何も変更されません。

+1.001100

この時点で、有効桁数が 2 (10 2 )より大きいか、1 未満の場合は、さらにシフトが必要な仮桁を持つことができます。しかし、この有効仮桁は、1 と 2 の間の必要な場所です。指数そのまま (110 2 )。

符号をビットに戻し、先頭の「1」を取ります。仮数をオフにして、ビットをまとめます。

0 110 001100

数値が通常の指数範囲をオーバーフローまたはアンダーフローすると例外が発生しますが、ここでは発生しませんでした。

于 2013-02-19T20:55:48.370 に答える