#include <stdio.h>
void main()
{
printf("%s\n",(0==-0)?"一样":"不一样")
}
运行结果:
一样
请按任意键继续. . .
+0、-0,在计算机中,都是不存在的。
在计算机中,数值一律用补码表示和存储。
0 在补码中,只有一个编码 0000 0000。
------------------
只有在原码和反码中,才是有两个零(+0、-0)的编码。
但是,在计算机中,原码和反码,都不存在。
所以,+0、-0,在计算机中,都是不存在的。
那么,琢磨它们,解释它们,都是毫无意义的。
因为-1
在内存中的存储是
FFFFFFFF
而
-0比-1大于1,所以
-0
本来实际内存应该为
100000000
然而整形只有四个字节,所以必须舍去最高位1,最后成为
00000000
和+0没有什么区别,但是进行过类似的运算在
EFL
标记位中的
进位标记和符号位
会改变