在计算机编程中,存在正负零。这可能不会让你感到震惊,但奇怪的是,正零等于负零的明显事实。这是一个例子:
public static class Program
{
public static void Main()
{
int positive = 0;
int negative = -0;
Console.WriteLine(positive == negative);
Console.Read();
}
}
输出显示为" True"。
至于每个人显然都在用" Int默认为0。"我应该指出,浮动和双打做同样的事情,在负和正零之间的平等中返回真实。
我认为这可能与图形的概念有关,其中负零点和正零点将在同一维度点内正交存在。还是他们之间存在平等的另一个原因是什么?
答案 0 :(得分:8)
使用two's complement完成否定int
。也就是说,反转这些位并添加一位。无论位长度如何,如果以零值执行此操作,则返回零。
例如0000
翻转变为1111
,添加1
会回滚到0000
。
这是为了消除两个零的冗余。
根据float
和double
,根据IEEE-754,技术上只有+0
和-0
,但它们被视为相等。
答案 1 :(得分:4)
他们相同,因为他们在数学上是平等的。 -x相当于-1 * x。好吧,0次任何事都是零。这相当于-1 * 0 = 0。
另外,当你说"在计算机编程中,存在正负零。"嗯,是为1s补充,但不是两个补充。我认为现在任何架构都不会使用1s补充。
"或者他们之间是否存在平等的另一个原因?"
出于同样的原因我在上面说过。我不认为我想生活在一个发生这种情况的世界里。
int x=0;
int y= -1*x;
if (y == x) //false
这会导致很多错误。
答案 2 :(得分:-3)
了解CPU如何表示负数