关于进制补码的八位取值范围为什么是

您所在的位置:网站首页 128的十六进制怎么算的 关于进制补码的八位取值范围为什么是

关于进制补码的八位取值范围为什么是

#关于进制补码的八位取值范围为什么是| 来源: 网络整理| 查看: 265

我们求补时不能按照平常的求补码方法来求,如果这样求的话,只会把自己碰的头破血流,所以我们不能将自己的思维固定在原码转反码转补码之上,这样最后求出来的是出问题的。

可以这样,我们将在-128~127里面随便取一个负数,因为补码取值范围-128~127(包括0,如果不清楚为什么有-128,请看下面的第四段解释),所以里面有256位,用256减去我们需要求的那个负数的绝对值,得出的值然后再求出它的二进制,你会发现这个值的二进制跟我们原本二进制根据原码求反码再求补码的值是一样的,所以我们对应的-128也应该用这样方法来计算,如果-128来这样取的话,发现最后的二进制跟我们使用原码反码和补码的取值得到的二进制是一样的,所以我们可以之前使用使用256-|-128|的方法来求取二进制的补码就行。(这里解释了为什么-128的二进制,主要是要改变自己原有的思维)。

例:-127,256-|-127|=256-127=129,而129的二进制就刚好是对应的-127的二进制,而-128的二进制就是256-|128|=256-128=128;所以128的二进制就是-128进行计算后的二进制。现在来了解一下为什么补码的取值范围是-128~127.

(下面是为什么补码取值范围是·128~127)

了解之前我们要先知道八位二进制最高是256个数,这256是怎么来的呢,因为这256个数包括了-0和+0,这样我们计算一下,127~0有128位,-0到-127有128位,128+128是不是256位,所以得出了八位数最多256位。现在我们看一下+0和-0的二进制的原码反码和补码

0的原码:00000000          -0的原码:10000000

0的反码:01111111            -0的反码:11111111

0的补码:00000000           -0的补码:反码加一,补码符号位也得改变,所以补码00000000

由此看出,补码0的正副多是00000000,所以补码就没有正副0之分,但是我们八位数还是得有256位,所以从127开始减,要想有256位,就必须到-128,看到这里,相信大家也明白些了。

(反正只要知道原码0和补码0多有正副0所以原码和反码的取值范围是-127~127,而补码只有0没有正副之分,而因为补码最大值是127,但是要想有256个就得取值到-128,这也就说清楚了补码取值范围为什么是-128~127了,原码和反码它们跟补码区别是一边多了个-0,而补码只有0),所以-128其实不能用平常的根据原码和反码方式来求出二进制的补码,因为这样求出来会误导我们,这时我们换一种思维来求,才能求出-128的补码,就比如0到-127使用本方法求出的补码跟根据原码和反码求出的补码是一样的,所以我们-128也就可以用这种方法来求出-128的补码(本人理解,有误请指出)

补充,刚刚看到一个视频里面说-128的补码是10000000是认为补充的,所以没必要特别纠结于-128的补码,只需要知道它怎么来的即可

继续补充:刚刚又学到一种新方法,例如:我们某二进制是10101100,如果它是某正数补码,那么它的真值也就是十进制为多少,我们可以根据之前的方法来求,10101100先求出它的十进制数为,然后我们将10101100看成正数求十进制,十进制数为172,再将172-256=-84;而这个-84就是我们要求的补码10101100的原码的十进制,当然这种方法只用于负数,当减一再取反也可以,而正数的话它的原码,反码,补码多是一样的,所以直接转十进制即可



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3