0

mx 10^x を nx 2^y に変換する方法。

2.93 x 10^12 を IEEE-754 表現に変換したい。

4

2 に答える 2

1

2 つのオプション: 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++;
    }
}

EDIT: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 に答える