特定情況下,−0具有特殊意義:
計算機科學
在對於整數的1+7位元的符號數值表示法中,負零是用二進制代碼10000000表示的。在8位元二進制反碼中,負零是用二進制代碼11111111表示,但二補數表示法則沒有負零的概念。在IEEE 754二進制浮點數算術標準中,指數和尾數為零、符號位元為一的數就是負零。
在IBM的普通十進制算數編碼規範中,運用十進制來表示浮點數。這裡負零被表示為指數為編碼內任意合法數值、所有係數均為零、符號位元為一的數。
在編程語言,例如C、C#、C++和Java,一個表達式的結果可能是負零(比如對一個負數算術下溢時的結果),此時負零和正零是等效的。因此一個簡單的比較不能夠確定一個數是負零。確定一個數是負零的辦法包括:
- 使用IEEE 754中定義的
copysign()
函數複製零的符號到任意非零的數上。 - 用一個正數來除以這個零——得到的無窮能夠反映出零的符號
- (x>0)
- (x>0)
- 在Java中,用
Double
類中的equals方法,能夠分辨出正零和負零,[1]例如:- Double negativeZero = new Double(-0.0);
negativeZero.equals(-0.0); // 結果:真
negativeZero.equals( 0.0); // 結果:假
- Double negativeZero = new Double(-0.0);
- 在C語言中,使用一個依賴於本地硬件表示法的不方便的辦法。例:
*(int *)&var == 0x80000000
(var在IEEE 754中編碼單精度)。
其他對於負零的運算有:
- (x>0)
- (x<0)
- (x<0)
- (x>0)
自然科學
在氣象學中,處於統計學的原因,−0常常用來表示一個低於零度卻又不足以約分成-1的溫度(無論華氏溫標還是攝氏溫標),比如−0.2度,它不能被列為零度因為零度顯然不會小於零。然而低於零度的天數往往是比較冬季寒冷程度的一個基本統計數據,所以它並不能被忽略。不過它又沒有低到能夠約分為-1度,所以就被記錄為−0度。[來源請求]
在統計力學中,一個系統可能會有負的絕對溫度,但是和直覺相反,這並不是極端寒冷,反而是極端炎熱,比任何一個正的溫度都要高(意指−0=無限)。在相關文獻裡,−0就是最高的溫度。[2]
參考資料
延伸閱讀
參見
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.