Cで数値を正規化する方法について少し混乱しています。浮動小数点バイナリ値1101.101のようなものがある場合、小数点を3桁左に移動することにより、1.101101 x 2^3として正規化されることを知っています。ただし、コードでこれを行う方法がわかりません。
したがって、10010000 exp 0 があり、01001000 exp 1 を取得したい場合、小数フィールドは「001」で、最終結果は 010001 です。
8 ビットの数値があり、先頭の 2 ビットが 00 の場合、1 が見つかるまでそれを移動します。または、先頭のビットが 01 の場合、それは既に正規化されています。同様に、11 の先頭の 2 ビットについては、左のビットに移動します。
したがって、私の数値が 32 ビットで、符号が 1、指数が 8、仮数が 23 の場合、次のようにします。
if ( (result >> 24) == "11") ) // although here I know I'm comparing an int with a string
{
//code to set result = to the new number
}
if ( (result >> 24) == "01" ) )
{
return result;
}
そして、他の 2 つの先行ビット番号 (00、10) の if ステートメントがさらにいくつかありますか? 私のロジック/コードが正しいかどうかわかりません。
ありがとう。