0

如何将 mx 10^x 转换为 nx 2^y 。

我想将 2.93 x 10^12 转换为 IEEE-754 表示。

4

2 回答 2

1

两个选项:明确计算 n,y:

y = ceil(log2(m*10^x)), n = (m*10^x / 2^y)

仅使用整数迭代:

将整数 293 写入变量尾数(并保持指数计数=10)

exp_two=0;
while (exponent>0) {
    mantissa*=10; exponent--;
    while ((mantissa & 1)==0) {
        mantissa>>=1; exp_two++;
    }
}

编辑:在 IEEE-754 中,假设0.5<n<=1.0. 这是固定的(通过乘/除以 2 直到满足条件并相应地调整指数 y )

于 2012-10-18T09:10:52.430 回答
0

你可以试试这个:

float f = 2.93E12;

unsigned int ui = *reinterpret_cast<unsigned int *>(&f);
于 2014-05-22T23:05:49.650 回答