如何将 mx 10^x 转换为 nx 2^y 。
我想将 2.93 x 10^12 转换为 IEEE-754 表示。
两个选项:明确计算 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 )
你可以试试这个:
float f = 2.93E12;
unsigned int ui = *reinterpret_cast<unsigned int *>(&f);