2012-06-20 109 views

回答

3

不,浮點不使用2補碼錶示,但所有二進制實現具有符號位,可以保證所有值(除了其中的NaN跡象沒有意義)可以測試浮點數的整數表示 與< 0. 這是因爲如果第一位被設置,則2補碼中的整數也爲負數。 但是有意義和指數都不使用2補碼錶示法。

+0

根據IEEE 754標準,NaN確實有符號位。它不能通過與0進行比較來進行測試,因爲與NaN的順序關係的每個測試都返回false,但可以分別檢查符號位,其中函數依賴於語言。 –

+0

是的,NaN有一個內部符號位,但它沒有意義。由於NaNs是「不是數字」,所以符號和指數/尾數都沒有任何意義。你可以使用尾數位(除了MSB,它定義了它是否是一個安靜的NaN /信號NaN)作爲錯誤代碼(並且在符號位中包含符號位),但是一個整數比較<0在所有其他數字上不適用於NaN,因爲沒有「正」或「負」NaN。 –

0

有不同種類的浮點數表示法,但我記得大多數類似於符號位(1 =正數),然後是2s補數指數值,然後是2s補碼尾數值與最顯着當指數爲零時位於1s位置。

請注意,在這種安排中,您可以使用整數比較大/小。

編輯

以上顯然是基於錯誤的記憶,但在http://en.wikipedia.org/wiki/Binary32有一個很好的解釋了。

基本上,...

  • 第一位是數字的符號,這也是尾數
  • 接下來的幾個位爲指數,其可以是無符號或爲的符號使用2-s補碼進行簽名。
  • 其餘位是尾數,減去隱含的前導「1」。
  • 零是一個特殊的情況下...
+0

錯誤。指數和尾數都不使用2補碼。 –

+0

如果使用「整數比較」,則意味着將浮點數的編碼重新解釋爲整數並對其進行比較,然後對於負數進行失敗。它也未能報告-0等於+0。 –