我想在IEEE 754雙精度的C++中從十六進制轉換爲float64。 這是我第一次玩點東西,所以也許我的代碼不夠乾淨。 我不知道爲什麼我的尾數給我奇怪的結果,但我認爲我做錯了什麼。十六進制浮點數IEEE 754雙精度C++
long int raw = 0x40000F0000000001;
int sign = raw >> 63;
long int mantissa = (raw & 0xFFFFFFFFFFFFF);
mantissa +=1;
double exp = ((raw >> 52) & 0x7FF) - 1023;
double result = pow(-1., sign) * mantissa * pow(2.0, exp);
cout << "MANTISSA: " << mantissa << " EXP: " << exp << endl;
cout << "RESULT: " << result << endl;
,輸出是:
MANTISSA: 16492674416642 EXP: 1
RESULT: 3.29853e+13
任何人都知道該怎麼辦呢?
謝謝
他加入 '1',因爲你的示例代碼顯示了'1.Fraction'。並提取了大量的5,然後使用'15 ...' - 這是他正在嘗試添加的領先1。 –
@MartinBonner好吧,那麼它肯定不是'+ = 1',因爲你已經在你的答案中提到了。 –