发布网友
共4个回答
热心网友
一下是鄙人的理解:C的补码设置是为了方便表示各个数,以及实现减法变为加法运算。补码所遵循的规则是出于科学性质考虑的。我们先抛开补码的实现规则,从补码的出发点来考虑。比如8bit的short int,每一位都有两种可能,0或1.则一定是可以表示2的8次方,即256个数的。然而如果按照一般的二进制定义规则,可以实现+127~-127,一共255个数。还有一个是由于+0与-0表示同一个数。采取补码规则可知,+0与-0的补码都是00000000。原来的+127~-127的数都可以无重复地转为相应的补码。这时候,+0-0重复地现象解决了,那剩下一个0,1组合10000000是无法从-127~+127的源码转换而成的,就约定成-128.
热心网友
八位二进制代表的各种信息,是有一定的规则。
建议看看:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/70cc437fa44448320dd7dad4.html
-----------------------------------------
有符号数,要用到补码,-128按照下列形式写。
符号位:1,代表负号;
数值位:000 0000,共7个0。 注意:不是你写的8个0 !!!
把7位数值位,求反加一,可得到原码,即为:1000 0000,这个8位数就是128。
所以,补码 1000 0000 就是十进制数 -128。
热心网友
-128没有原码,只有补码10000000,也在8位二进制范围中,故范围为-128到127
热心网友
原码的范围是-127--127而-0的补码是等于0所以它从-128--127