−0

−0或负零代表0的相反数，数学意义上等于0。

特定情况下，−0具有特殊意义：
 在计算机科学中，−0是浮点数中表达0的一种方式，可以在某些时候进行符号性处理。
 在普通应用中，−0有可能被用来表示一个可以四舍五入为零的负数，或者是一个从负方向上趋近于零的数。
 在统计力学中，特定的系统在反转分布的状态下，可以被认为拥有−0的绝对温度。

 计算机科学 
 表示法 
400px|thumb|以IEEE 754單精度浮點數表示負零
在对于整数的1+7位元的符号数值表示法中，负零是用二进制代码10000000表示的。在8位元二进制反码中，负零是用二进制代码11111111表示，但二補數表示法則沒有負零的概念。在IEEE 754二进制浮点数算术标准中，指数和尾数为零、符号位元为一的数就是负零。

在IBM的普通十进制算数编码规范中，运用十进制来表示浮点数。这里负零被表示为指数为编码内任意合法数值、所有系数均为零、符号位元为一的数。

 性质与处理 
在编程语言，例如C、C#、C++和Java，一个表达式的结果可能是负零（比如对一个负数算术下溢时的结果），此时负零和正零是等效的。因此一个简单的比较不能够确定一个数是负零。确定一个数是负零的办法包括：
使用IEEE 754中定义的copysign()函数复制零的符号到任意非零的数上。 
用一个正数来除以这个零——得到的无穷能够反映出零的符号 
  (x>0)
  (x>0)
在Java中，用Double类中的equals方法，能够分辨出正零和负零，例如：
Double negativeZero = new Double(-0.0);negativeZero.equals(-0.0); // 结果：真negativeZero.equals( 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就是最高的温度。

 参考资料 




  — 一个包含有负零的“十进制”浮点数规范

 延伸阅读 
 ——Fortran语言中（Fortran 95）SIGN 函数的一个变化以适应负零 
 ——JScript的浮点数从定义上即包括负零
 ——Java虚拟机中负零的表示法
 ——在比较浮点数时是怎么处理负零的
 ——UNIVAC® 1100 系列电脑中的二进制反码

 参见 
0
数学
计算机科学
编程语言

Category:計算機算術
Category:0