-128的八位原码、反码、补码是多少?

问题如上、要求尽量通俗点!特别是她的补码!!
2025-03-13 02:50:59
推荐回答(2个)
回答1:

数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是二进制;

在八位二进制下,-128不能用原码或反码表示,反码只能表示0到127,-0到-127;

用补码表示为:10000000

补码的计算有两种方法:

1.一个数取代数的负号运算,相当于先取反再加1,10000000先看成是负数,我们要知道它的绝对值是多少,就取反加1,可结果还是10000000
这时不能看成负数了,最高位是数值位,因此是128,所以原来是-128。

2.127是01111111,01111111+10000000=11111111,127+x=-1,=>x=-128。

在八位整数里原码的取值范围为-127到+127,反码也是;在八位二进制中就把-0当作最小数-128用,也就是10000000

-0的原码:10000000

-0的反码:11111111

-128的补码:10000000

补码的设计目的是:

  1. 使符号位能与有效值部分一起参加运算,从而简化运算规则;

  2. 使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计 。

负数的补码就把他正数的原码取反再加1就可以了,正数的原码反码补码都是一样的。

回答2:

-128,有八位的补码,却没有八位的原码和反码。

因为,原码和反码的定义,都是有缺陷的:

  一个数字零,它们却都定义了两个编码 +0-0!

所以,八位的原码反码,只能表示-127 ~ +127。

所以,它们都无法表示-128。

因此,用“取反加一”求-0 或-128 的补码,都是行不通的。

同样,用“取反加一”求补码 1000 0000 对应的原码,也是不灵的。

-------------------------

求补码的正规做法,是使用定义式:

 当 X >= 0,  [ X ]补 = X;     零和正数不用变换。

 当 X < 0,  [ X ]补 = X + 2^n。 n 是补码的位数。

这个定义式,是通用的。你可以在书上找到的。

那么,[-128]补 = -128 + 2^8 = 1000 0000 (二进制)。

也就是说:八位的补码 1000 0000,代表的数值是-128。