只有补码能表示-128,只有补码能表示1

http://www.itjxue.com  2023-01-17 03:27  来源:未知  点击次数: 

补码为什么可以表示-128

补码,是一种用二进制表示有号数的方法,也是一种将数字的正负号变号的方式。

1、在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。

2、补码与原码的转换过程几乎是相同的。

正数的补码,与原码相同。

负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。

1000 0000 的反码是 0111 1111,十进制为 127,补码是反码+1,即128 。

原码和补码相加为 0,所以 1000 0000 是 128 的补码,即 -128 。

什么么负128有补码??? 没原码 反码 要补码做什么??? 为什么要这么 规定???

推断-128的原码和补码(用补码=

反码+1)

1.关于原码1000

0000,表示的是-0,还是-128呢?(答案是-128而不是-0)

1.先看看原码的概念吧:正数的符号位为0,负数的符号位为1,其它位按照一般的方法来表示数的绝对值

2.0是负数吗?0既不是正数也不是负数,那么它的符号位到底是0还是1呢?(0的符号位为0,不能为1)

3.看看负数补码的公式:负数的补码=10000

0000(模)-数的绝对值

比如:-1

1111

1111

=10000

0000-0000

0001

-2

1111

1110

=10000

0000-0000

0010

现在假设-0为负数,那么

-0的补码应该是10000

0000

-

0(这个0,姑且教0的绝对值吧)=0000

0000

反码:1111

1111(0000

0000

-1=0000

0000

+1111

1111=1111

1111)

原码:1000

0000

现在来推-128

-128的补码:10000

0000

-

1000

0000(+128没有符号位)=1000

0000

反码:1111

1111(1000

0000

-1=1000

0000+1111

1111=1111

1111)(补码-1)

原码:1000

0000(反码取反)

从上面看来,一个原码对应了2个补码

但是仔细分析:原码的概念,负数的符号位为1,但是0不是负数,所以不能用此公式

0也不是正数,但是可以把0定义为原码、反码和补码都一样(即0000

0000)

而且据说可以推断出0的补码只有一个(有兴趣的

可以去推一下,呵呵)

现在原码1000

0000就唯一表示-128了,而不会表示出-0,因为-0不能用这个公式计算

现在,补码1000

0000的原码是1000

0000(已证明),那么原码1000

0000的补码是1000

0000吗?

原码

1000

0000

(-128,进位被舍去)

反码

1111

1111

补码

1000

0000(1111

1111(反码)

+

1=1000

0000,这里实际上真正相加的是1111

1111后面的7位,

第1位是符号位始终不会变,所以,当进到第8位的时候,就表示溢出了,会被舍弃)

2.综上所述:1.-128的补码和原码一样都是1000

0000,

2.0的原码、反码和补码都一样(即0000

0000)

3.如果把-0当做负数,1000

0000就会有歧义(事实上0的补码只有一个0000

0000)

-128怎么表示?

-128 在八位二进制下,并没有原码和反码,只有补码。

而且,在计算机中,也只有补码,并没有原码和反码。

使用补码的意义在于:【把减法转换为加法】。

从而能够简化计算机的硬件。

计算机的位数是固定的,这就为补码的应用,提供了条件。

------

比如,限定,只用两位十进制 0~99,周期就是 100。

那么,减一,就可以用 +99 代替:

24 - 1 = 23

24 + 99 = (1) 23

只是保留两位数,忽略进位,结果就是相同的。

那么,99,就称为-1 的【补数】。

负数的补数的计算公式:100 + 负数。

------

计算机使用二进制,通常是指定为八位。

即,可以使用 0000 0000~1111 1111,共有 256 种。

对应的十进制,就是 0~255。周期是 256。

那么,减一,就可以用 +255 代替。

即:

-1 的补码是 1111 1111 (十进制 255)。

-2 的补码是 1111 1110 (十进制 254)。

-3 的补码是 1111 1101 (十进制 253)。

。。。依次减一,直到-128。。。

-128 的补码,1000 0000 ( = 128)。

。。。共有 128 个负数及其补码。。。

------

求负数补码的公式:【256+该负数】。

正数:直接即可进行运算,不需要任何转换。

------

补码是有用的。

原码反码,则是毫无用处的。

所以,计算机中,并没有原码和反码。

况且,-128 也没有八位的原码和反码!

原码反码,都是什么,不必关心!

-128的补码是多少?

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

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

用补码表示为:10000000

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

-0的原码:10000000

-0的反码:11111111

-128的补码:10000000

扩展资料

小数原码

[X] =

X( 0≤X 1 )

1- X (-1 X ≤ 0)

例如: X=+0.1011 , [X]原= 0.1011

X=-0.1011 [X]原= 1.1011

整数原码

[X]原 =

X (0≤X 2(n-1))

2(n-1)-X (- 2(n-1) X ≤ 0)

x为正整数时,[X]原=x;

x为负整数时,[X]原=2的n次方-x;

x为负小数时,[X]原=1-x;

参考资料:百度百科 反码

百度百科 二进制

(责任编辑:IT教学网)

更多

推荐微信营销文章