ほとんどのプロセッサは、IEEE754バイナリ浮動小数点演算を使用します。この形式では、数値は符号s、分数f、および指数eとして表されます。分数は仮数とも呼ばれます。
符号sは、それぞれ+または–を表すビット0または1です。
倍精度では、仮数fは53ビットの2進数で、最初のビットの後に基数があります(1.1010000100100110011100011011001100101010000000100011 2など) 。
倍精度では、指数eは–1022から+1023までの整数です。
符号、仮数、および指数で表される合計値は、(-1)s • 2e •<em>fです。
2つの数値を加算すると、プロセッサは結果に使用する指数を計算します。次に、その指数が与えられると、結果に使用する分数がわかります。大きい数と小さい数を追加すると、結果全体が仮数に収まりません。したがって、プロセッサは、数学的な結果を仮数に収まるものに丸める必要があります。
あなたが尋ねる場合、2番目に追加された数値は非常に小さいので、丸めは最初の数値と同じ値を生成します。最初の数値を変更するには、最初の数値の仮数の最下位ビットの値の少なくとも半分の値を追加する必要があります。(四捨五入の際、仮数に収まらない部分が仮数の最下位ビットの半分以上の場合は切り上げます。ちょうど半分の場合は、最下位ビットがゼロになる場合は切り上げ、その場合は切り捨てます。最下位ビットをゼロにします。)
非正規化数、無限大、指数の格納方法など、浮動小数点には追加の問題がありますが、上記はあなたが尋ねた動作を説明しています。
あなたが尋ねる特定のケースでは、360に追加し、2 -45より大きい値を追加すると、360より大きい合計が生成されます。2-45以下の正の値を追加すると、正確に360が生成されます。 360のビットは28なので、仮数の最下位ビットは2-44です。