-0的补码为何是00000000?

-0的反码是11111111,负数补码又是数符位为1,数值位反码+1,那么-0的补码应该是10000000啊?

为什么-0的反码是11111111不是111111或者1111111111?
因为你要考虑二进制表示的位数。你用8位表示一个整数。
那么-0的补码应该是10000000,而你只有8位,所以最高位的1其实不存在,所以是00000000。

正数和0的补码是它本身

因为规定是8位来算的。第九位的1就被省略了。

负数的补码=反码末位+1那么 -0的补码=1111 1111末位加1 = 1 0000 0000 第九位1是产生的进位,所以用8位表示 -0的补码是 0000 0000

补码数(有符号数),没有-0 这个编码,
8位为例,10000000 这个编码不是 -0,是-128
现在很多编程语言例如C,C++认为这个编码不是一个正确的有符号数
8Bits 有符号数范围是 -127~127
这是 -0 的原码,不是补码
负数的原码是正数(该负数的绝对值)并且在高位补上1 表示符号。
负数的补码是它的相反数,也就是它的绝对值,负数用补码表示。
正数的原码是它自己,补码是他的相反数,正数用原码表示,这才是有符号数(补码数)的表示方法。
0 的相反数是它自己,绝对值也是它自己,
它即是原码,也是补码
所以 0的补码是0
当然也可用加法溢出得出 0的补码是0。

或者我们说,假设你用9位表示0的补码,那么是111111111而不是你写的11111111,即011111111,永远在最前面有个1,所以当你+1的时候,永远往前进位而不可能在哪里遇到0而形成1

通常二进制计数,都是使用8位二进制表示一个整数。

-0的补码应该是10000000,折算成8位二进制就是00000000。

今天听一位教授讲,正是为了解决-0和+0的问题才提出的补码。
楼上正解哦

舍掉啊//////////

不论用多少位存储0,其原码为全0,求反码后为全1,再取补码时,由于低位加1,导致原码所有位翻转为0,最高位溢出一个1,不会被保存,所以又变回0。

感情这个东西用计算机算一下就可以了,实在不想就记住把

八位,从后往前数八位就OK了

补码系统只有一个0。

原码系统有正0和负0之分。