首页 > 编程知识 正文

-128的原码反码补码,原码反码补码转换例题

时间:2023-05-06 08:01:40 阅读:39639 作者:2476

数量在计算机上用二进制格式表示。

数分为有符号的数和没有符号的数。

原码、反码、补码都是带符号固定点数的表示方法。

带符号固定点数的最高位比特为符号比特,0为正,1为副。

以下,都以8位整数为例,

源代码是这个数本身的二进制格式。

例如

0000001是1

1000001是-1

正数的反码和补码都与原始码相同。

负数的逆符号是将该原符号除去符号比特后的各位求逆

[-3]反=[10000011]反=11111100

负数的补码是将其原码用符号位以外的各位反转后,最后一位加1。

[-3]补=[10000011]补=11111101

一个数及其补数是可逆的。

为什么要设置补充代码?

第一,是为了让计算机执行减法。

[a-b]增补=a增补(-b )增补

第二个理由是为了统一正0和负0

正零: 00000000

负零: 10000000

这两个数实际上是0,但他们的源代码有不同的显示。

但是,他们的补码是一样的,都是00000000

特别是,如果1之后有进位,请笔直向前进位,包括符号位。 (这和反码不一样! )

[10000000]候补

=[10000000]反1

=11111111 1

=(1) 00000000

=00000000 (最高有效位溢出,符号位变为0 ) ) )。

有人问

10000000这个补数表示的哪个数的补数呢?

其实这是规定,这个数量表示-128

因此,能用n位补数表现的范围是

-2^(n-1 )至-2^(n-1 )-1

比n位源代码能够表示的数量多一个

又一个例子:

1011

原代码: 01011

反码: 01011 //正数时,反码=原码

补数: 01011 //正数时,补数=原码

-1011

原代码: 11011

反转码: 10100 //负数时,反转码取原码的反转

补数: 10101 //负数时,补数取原码的反1

0.1101

原始代码: 0.1101

解码: 0.1101 //正数时,解码=原码

补数: 0.1101 //正数时,补数=原码

-0.1101

原代码: 1.1101

反转代码: 1.0010 //负数时,反转代码取原代码的反转

补数: 1.0011 //负数时,补数取原码的倒1

总结:

在计算机内,固定点数有原码、反码、补数三种表现法

原代码是前面介绍的二进制点表示法,最高位表示符号位,“0”表示正,“1”表示负,剩下的位表示数值的大小。

在反转表示法中,正数反转码与它的原始码相同的负数反转码,除了编码比特之外,使其原始码按比特反转。

在补数表示法中,正数的补数与其原数相同; 负数的补数是其反码的最后一位加1。

1、原码、反转码、补码的表示方法

(1)源代码)在数值前面直接加符号位的表示法。

例如,编码比特数值比特

[ 7]原=0 0000111 B

[-7]原=1 0000111 B

注意: a .数0的源代码有两种格式。

[ 0]原=00000000B [-0]原=10000000B

b. 8位二进制代码的显示范围:-127~ 127

2 )反码:

正数:正数的反码与原始码相同。

负数:负数的反码。 符号位为“1”,数值部分按位相反。

例如,编码比特数值比特

[ 7]反=0 0000111 B

[-7]反=1 1111000 B

注意: a .数0的反码也有两种形式。 也就是说

[ 0]反=00000000B

[- 0]反=11111111B

b. 8位二进制代码的显示范围:-127~ 127

3 )补数的表示方法

1 )类型概念:一个测量单位称为类型或类型。 例如,时钟以十二进制进行计数周期。 也就是说,将12设为模式。 在时钟上,时针加上12个整数位或减去12个整数位不会改变时针的位置。 14点丢掉冲模12后,变为(下午) 2点) 14=14-12=2)。 从0点逆时针减去10格可减去10小时,从0点顺时针减去2格可加上2小时,也可视为2点(0-10=-10=-10 12=2)。 因此,假设冲模12,-10可以映射为2。 由此可知,在模块数为12的循环系统中,加上2的效果和减去10的效果相同,因此在以12为类型的系统中,减去10的运算都能够通过加上2来置换,将减法问题变换为加法问题。 10和2对冲模12来说互为补数。

同样,由于计算机的运算部件和寄存器有一定的字长限制(字长为8 ),所以其运算也是模拟运算。 当计数器达到8位即256个时,会发生溢出,并且从一开始就进行计数。 溢出量是计数器的模式,明显是8位二进制数,其模式数为28=256。 在计算中,两个互补的数称为“补数”。

2 )补码表示)正数)正数补码与原码相同。

负数:负数的补数在符号位为“1”、数值部分按位反转后,在末尾位(最低位位)上加1。 也就是说,“反码1”。

例如,编码比特数值比特

[ 7]候补=0 0000111 B

[-7]候补=1 1111001 B

补码是微机中重要的代码格式,请注意:

a .采用补数,可以方便地将减法运算转换为加法运算,简化了运算过程。 正数补数是它所表示的数的真值,但负数补数的数值部分不是它所表示的数的真值。 利用补数进行运算,得到的结果仍然是补数。

b .与原码、反码不同,数值0的补码只有一个,[0]补码=00000000B。

c .字长为8位时,补数表示的范围为-128~ 127; 进行补数运算时,请注意得到的结果不要超过能用补数表示的数量范围。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。