まず、x
がゼロの場合、ゼロを返します。
次に、 のゼロ以外の最上位ビットのインデックスを見つけますx
。それを呼び出しますi
。
i
が 24 未満の場合、正規化された仮数を取得するために左シフトx
します。23 - i
ここで、ビット 23 をクリアして暗黙のビットを非表示にし、ビット 23:30 を127 + i
バイアス指数である に設定します。結果を返します。
それ以外の場合は、切り捨てによって正規化された仮数を取得するために右シフトx
しi - 23
て、暗黙のビットをクリアし、指数を上記のように設定します。目的の丸めモードが切り捨てまたはマイナス無限大への丸めである場合は、これで完了です。それ以外の場合は、 の下部からシフトされたビットを確認する必要がありますx
。目的の丸めモードが「プラス無限大への丸め」であり、これらのビットのいずれかが設定されている場合は、結果に 1 を加えて返します。最後に、目的の丸めモードが最も近い同数に丸める (IEEE-754 のデフォルト) 場合は、次の 3 つのケースがあります。
- 末尾のビットは
b0...
次のとおりです。切り捨てられた結果を返します。
- 末尾のビットは次の
b1000...
とおりです。これは正確に中途半端なケースです。切り捨てられた結果を呼び出す場合はt
、返す必要がありますt + (t&1)
。t
つまり、が奇数の場合にのみ切り上げます。
- 末尾のビットは
b1...1...
次のとおりです。切り捨てられた結果に 1 を追加して返します。