IEEE754の丸め規則を理解するのに苦労しています。
- 正の無限大に丸める
- 負の無限大に丸める
- 最も近い偶数に偏っていない
2進数の右側に9ビットで構成される2進数があり、右端の3ビットを使用して丸めを決定する必要がある場合はどうすればよいですか?
これは宿題なので、質問について漠然としています...コンセプトについて助けが必要です。
ありがとうございました!
正の無限大に向かって丸めることは、丸めの結果が引数より小さくならないことを意味します。
負の無限大に向かって丸めることは、丸めの結果が引数より大きくなることはないことを意味します。
最も近い値に丸める、さらには丸めの結果が引数よりも大きい場合もあれば、小さい場合もある(等しい場合もある)ことを意味します。
+0.100101110
2進小数点の後に値を6桁に丸めると、次のようになります。
+0.100110 // for round towards positive infinity
+0.100101 // for round towards negative infinity
+0.100110 // for round to nearest, ties to even
値は分割されます
+0.100101 110
保持するビットと丸めの結果を決定するビットに変換します。
値は正であり、決定ビットはすべて0ではないため、正の無限大に向かって丸めることは、保持されている部分を1ULPだけインクリメントすることを意味します。
値は正であるため、負の無限大に丸めると、最後のビットが破棄されます。
最初のカットオフビットは1であり、それ以降のすべてのビットが0であるとは限らないため、値+0.100110
は元の値よりも元の値に近くなり+0.100101
、結果はになり+0.100110
ます。
最も近い/偶数の場合のより有益な例は、実際に同点である例または2つです。たとえば、+0.1001
2進小数点の後に3ビットに丸めます。
+0.100 1 // halfway between +0.100 and +0.101
ここでは、ルールは、2つの最も近い値の最後のビットが0(最後のビットが偶数)の値を選択するように指示しています。つまり+0.100
、この値は負の無限大に丸められます。ただし+0.1011
、今回は2つの最も近い値の大きい方の最後のビットが0であるため、丸めは正の無限大に向かって丸められます。