我对如何在 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 语句?我不确定我的逻辑/代码是否正确。
谢谢。