我很無聊,想看看double的二進制表示是什麼樣子。但是,我注意到窗戶上有些奇怪的東西。以下幾行代碼演示雙數的二進制表示
double number = 1;
unsigned long num = *(unsigned long *) &number;
cout << num << endl;
在我的Macbook上,這給了我一個非零數字。在我的Windows機器上,它給了我0.
我期待它會給我一個非零數字,因爲1.0的二進制表示形式不應該是全零。但是,我不確定我想要做的是明確定義的行爲。
我的問題是,上面的代碼只是愚蠢和錯誤?而且,有沒有辦法打印出double的二進制表示?
謝謝。
只是可以肯定,這是英特爾的MacBook?無論如何,通過在兩臺機器/編譯器上打印sizeof(unsigned long)的值來驗證。無論如何,爲了可靠的結果,轉換爲char指針並執行十六進制轉儲以查看字節。 – hyde 2013-02-25 22:13:38
退房http://babbage.cs.qc.cuny.edu/IEEE-754/ – 2013-02-25 22:14:24