這個問題的擔憂轉換浮點數小於ABS(1)和負32.32格式,例如:-0.1234。如何表示-0二進制
當此被轉換爲32.32,整數部分和小數部分分別分隔成上部和下部32位字。在上面的例子中,高32位將保持-0,而低位將保持.1234,二者都轉換爲二進制。
所以現在的問題是,在這種情況下,一個人如何正確地表示二進制-0價值?
這個問題的擔憂轉換浮點數小於ABS(1)和負32.32格式,例如:-0.1234。如何表示-0二進制
當此被轉換爲32.32,整數部分和小數部分分別分隔成上部和下部32位字。在上面的例子中,高32位將保持-0,而低位將保持.1234,二者都轉換爲二進制。
所以現在的問題是,在這種情況下,一個人如何正確地表示二進制-0價值?
這取決於。
+0 == 0 == -0
編程的實際目的。在這種情況下,你必須弄清負數如何被處理,但是底層系統。 (通常是two's complement或sign bit)以及相應的猴子。
好一點。這個問題源於客戶的要求,該要求指定了在將雙值存儲到EEPROM時使用的數字格式。有趣的是,這個要求確實要求以「32.32 2的補碼格式」編碼數字。作爲2的補碼,如何將-0.1234的值編碼並寫入EEPROM,然後在不丟失負號的情況下檢索並解碼? – DougEC
@doug:想到「32.32」的方式是它將代表某個數字「x」,其方式與「64.0」存儲'x *(1L << 32)'完全相同。 –