为什么负零等于正零?

Kry*_*hic -3 c# signed

在计算机编程中,存在正负零.这可能不会让你感到震惊,但奇怪的是,正零等于负零的明显事实.这是一个例子:

public static class Program
{
    public static void Main()
    {
        int positive = 0;
        int negative = -0;
        Console.WriteLine(positive == negative);
        Console.Read();
    }
}
Run Code Online (Sandbox Code Playgroud)

输出显示为"True".

至于每个人显然充斥着"Int默认为0"的评论.我应该指出,浮动和双打做同样的事情,在负和正零之间的平等中返回真实.

我想这可能与图形的概念有关,其中负零点和正零点将在同一维度点内正交存在.还是他们之间存在平等的另一个原因是什么?

Dav*_*eau 8

int使用二进制补码完成否定.也就是说,反转这些位并添加一位.无论位长度如何,如果使用零值执行此操作,则返回零.

例如,0000翻转成为1111并添加1滚动回到0000.

这是为了消除具有两个零的冗余.

使用floatdouble,根据IEEE-754,技术上既有+0-0,但它们被认为是平等的.