−0

等於0的表達式

−0負零代表0相反數,數學意義上等於0。

特定情況下,−0具有特殊意義:

計算機科學

表示法

 
IEEE 754單精度浮點數表示負零

在對於整數的1+7位元的符號數值表示法中,負零是用二進制代碼10000000表示的。在8位元二進制反碼中,負零是用二進制代碼11111111表示,但二補數表示法則沒有負零的概念。在IEEE 754二進制浮點數算術標準中,指數和尾數為零、符號位元為一的數就是負零。

IBM的普通十進制算數編碼規範中,運用十進制來表示浮點數。這裡負零被表示為指數為編碼內任意合法數值、所有係數均為零、符號位元為一的數。

性質與處理

在編程語言,例如CC#C++Java,一個表達式的結果可能是負零(比如對一個負數算術下溢時的結果),此時負零和正零是等效的。因此一個簡單的比較不能夠確定一個數是負零。確定一個數是負零的辦法包括:

  1. 使用IEEE 754中定義的copysign()函數複製零的符號到任意非零的數上。
  2. 用一個正數來除以這個零——得到的無窮能夠反映出零的符號
    •   (x>0)
    •   (x>0)
  3. 在Java中,用Double中的equals方法,能夠分辨出正零和負零,[1]例如:
    • Double negativeZero = new Double(-0.0);
      negativeZero.equals(-0.0); // 結果:真
      negativeZero.equals( 0.0); // 結果:假
  4. 在C語言中,使用一個依賴於本地硬件表示法的不方便的辦法。例: *(int *)&var == 0x80000000varIEEE 754中編碼單精度)。

其他對於負零的運算有:

  •   (x>0)
  •   (x<0)
  •   (x<0)
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •   (x>0)
  •  

自然科學

氣象學中,處於統計學的原因,−0常常用來表示一個低於零度卻又不足以約分成-1的溫度(無論華氏溫標還是攝氏溫標),比如−0.2度,它不能被列為零度因為零度顯然不會小於零。然而低於零度的天數往往是比較冬季寒冷程度的一個基本統計數據,所以它並不能被忽略。不過它又沒有低到能夠約分為-1度,所以就被記錄為−0度。[來源請求]

統計力學中,一個系統可能會有負的絕對溫度,但是和直覺相反,這並不是極端寒冷,反而是極端炎熱,比任何一個正的溫度都要高(意指−0=無限)。在相關文獻裡,−0就是最高的溫度。[2]

參考資料

  1. ^ Double (Java Platform SE 6). docs.oracle.com. [2022-12-10]. (原始內容存檔於2022-12-25). 
  2. ^ Kittel, Charles; Kroemer, Herbert. Thermal Physics. W. H. Freeman & Company. 1980. ISBN 0-7167-1088-9. 

延伸閱讀

參見