我有一個雙數字,我想用IEEE 754 64位二進制字符串表示它。 目前我使用的是這樣的代碼:在C++中將雙數轉換爲(IEEE 754)64位二進制字符串表示形式
double noToConvert;
unsigned long* valueRef = reinterpret_cast<unsigned long*>(&noToConvert);
bitset<64> lessSignificative(*valueRef);
bitset<64> mostSignificative(*(++valueRef));
mostSignificative <<= 32;
mostSignificative |= lessSignificative;
RowVectorXd binArray = RowVectorXd::Zero(mostSignificative.size());
for(unsigned int i = 0; i <mostSignificative.size();i++)
{
(mostSignificative[i] == 0) ? (binArray(i) = 0) : (binArray(i) = 1);
}
上面的代碼只是正常工作沒有任何問題。但是,如果您看到,我正在使用reinterpret_cast並使用無符號long。所以,這段代碼非常依賴於編譯器。任何人都可以告訴我如何編寫一個獨立於平臺且不使用任何庫的代碼。我很好,如果我們使用標準庫甚至是bitset,但我不想使用任何機器或編譯器相關的代碼。
在此先感謝。
假設IEEE 754已經與機器相關。 – Mysticial 2011-12-23 22:29:20
好的,有沒有辦法做到這一點..? – jero2rome 2011-12-23 22:37:28
C99爲x86_64計算機提供了長達80位的擴展精度。但它與x86電腦的雙倍相同。 – Geoffroy 2011-12-23 22:40:54