为什么用二进制补码表示数值范围比原码多一个呢?

来源:百度知道 编辑:UC知道 时间:2024/06/07 07:30:17
为什么用二进制补码表示数值范围比原码多一个呢?
例如:用8位二进制原码表示的范围[一个符号位]
-127~+127
而用其补码表示则是-128~+127 ---->10000000~01111111,本人不明白为什么10000000就是表示-128,请详尽其因~谢谢!!!

可以像我这样理解:把-128-127分成两部分-128-(-1)为一部分,0-127为另外一部分,这样的话 不就对称了吗?两边都有128个数
记住一个规则,求一个数的补码的办法:取反加1比如:01111111为127那么-127的补码(取反加1)为10000001然后在减1就变成了10000000,-127减1之后就为128了
为什么求一个负数的补码的方法是求反加1呢?
01111111+ 127+
10000000= -128=
11111111 -1

01111111+
10000001=
00000000
所以求一个负数的补码的方法是求反加1(对什么求反,对负数对应的正数的原玛求反

在二进制中,对十进制0和十进制-0取补码,分别是0000000和10000000,而0和-0是相等的,因此为了增大表示范围,强制认为10000000为-128。这样就多表示了一个数。

原码的0是有两种表示方式-0和0
而补码的0只有一种表示方式
这就是区别为什么二进制补码表示数值范围比原码多一个