-32768的补码等于多少?原码又是?

问题描述:

-32768的补码等于多少?原码又是?

你应该考虑的是16位的有符号整数(int)吧
在计算机中是用补码存储数据 为什么不用原码存 就是因为原码表示不了最小值-32768
如果是原码表示的话,编码中+0是用16个0表示,-0是用1后跟15个0表示
但是由于+0等于-0所以相当于多花了一个编码来编码0
那么用补码会怎样
补码+0编码出来是16个0
-0 = [1000000000000000]原 = [1111111111111111]反 = [(1)0000000000000000]补
其中1溢出不管了 剩下的是16个0与+0编码相同
这样一来用16位进行编码如果按原码编码可以覆盖-32767~32767[1111111111111111~0111111111111111]
而用补码编码只覆盖到[1111111111111111~0111111111111111]其中[1000000000000000]编码不到
于是规定了用它表示最小值-32768
因此,在考虑16位有符号整数时,-32768只有补码[1000000000000000]没有原码
当然如果你考虑的是大于16位来编码的话-32768肯定能正常编码,如上面所示,用计算器换算原码补码就那结果
但是那显然是大于了16位来考虑的