带符号8位二进制数原码所能表示的数值范围为?

大多数表示的是-128到+127,但是我不明白-128是怎么来的啊?
8位二进制数原码的最高位是符号位为1,那么-128表示为
110000000这不是成9位了吗?
是不是应该是-127即11111111到01111111?

原码通常一般用8位二进制数表示带符号的真值(我们生活中用的数,即非机器数),好像是因为早期线路都是每次输送1字节;但在声明的情况下原、反、补、移码都有其他位数的情况
数值定义:真值0=10000000;
范围:x表示真值,〔x〕表示带符号的真值,〔x〕原表示其原码(反、补、移码类同),n表示真值的整数位数
[x]原=x(2^n>x>=0) Or 2^n-x 0>=x>-2^n
按数值大小-128~0~127[通式为-2^(n-1)~0~2^(n-1)-1]对应01111111~10000000~11111111
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-04-06
一、什么是原码、反码和补码

我们知道,在计算机内部存储的带符号数都是以补码形式存储,用补码形式进行运算的。什么是一个数的补码?为什么要用补码?这要从数的原码、反码开始讲。我们以整型数为例,且假定字长为8位。

6421705011f85ab62c79569604781a58.png
1、原码

整数X的原码是指:其符号位为0表示正,为1表示负;其数值部分就是X的绝对值的二进制数。X的原码通常用【X】原表示。如:

【+100】原=01100100 【+0】原=00000000

【-100】原=11100100 【-0】原=10000000

注意:在原码中,零有两种表示形式。

原码表示法简单易懂,与真值(带符号数本身)转换方便,只要符号还原即可,但当两个正数相减或不同符号数相加时,必须比较两个数哪个绝对值大,才能决定谁减谁,才能确定结果是正还是负,所以原码不便于加减运算。

2、反码

X的反码是指:对于正数,反码与原码相同;对于负数,符号位不变,其数值位X的绝对值取反(1变0,0变1)。X的反码通常用【X】反来表示。如

【+100】反=01100100 【+0】反=00000000

【-100】反=10011011【-0】反=11111111

注意:在反码中,零也有两种表示形式。

反码运算也不方便,通常用来作为求补码的中间过渡。

3、补码

X的补码是指:对于正数,补码与原码相同;对于负数,符号位不变,其数值位X的绝对值取反后在最低位加1。X的补码通常用【X】补来表示,实际上,【X】补=【X】反+1。如:

【+100】补=01100100 【+0】补=00000000

【-100】补=10011100 【-0】补=00000000

注意:在补码中,零有唯一的编码,【+0】补=【-0】补=00000000。

补码运算简单方便,符号位可以作为数据的一位参与运算,不必单独处理;二进制的减法可用其补码的加法来实现,简化了硬件电路
第2个回答  2013-10-29
原码,看好了,前提是原码。

有符号数原码表示的范围就是[-127,127],因为这里面非常特殊,有一个+0和一个-0。
但是有符号补码,看好了,是补码的范围是[-128,127],此时消除了+0和-0的因素。
相似回答