我試圖解決,我需要回位水平相當於一個無符號的浮點數乘以4.使用位操作
所以問題浮點乘法到目前爲止,我一直在探索其他的答案和發現一個和我的很相似的,但也沒有工作。真的沒有給出解釋,所以我試圖瞭解當我運行測試用例時出現了什麼問題。
當我測試的問題,我得到
33554432 [0x2000000]。
但我應該
25165824 [0x1800000]
到目前爲止,我的代碼是
unsigned a = (uf >> 0x17) & 0xFF;
unsigned b = uf & 0x80000000;
unsigned c = uf & 0x007FFFFF;
if (a == 0xFF || (a == 0x0 && c == 0x0))
return uf;
if (a) {
a <<= 0x2;
} else if (c == 0x7FFFFF) {
c >>= 0x2;
a <<= 0x2;
} else {
c <<= 0x2;
}
return (a<<0x17|b|c);
有什麼建議?
這個問題已經被問到幾天前了。你被告知使用固定寬度的類型。你也不檢查NaN,非規範化和其他特殊編碼。 – Olaf
@Olaf我相信我檢查那些在第一條if語句 – JCD
@DougCurrie我看到了這個問題,但是沒有解決任何答案或解釋代碼 – JCD