计算机原码、反码、补码、移码转换及范围

计算机原码、反码、补码、移码转换及范围

数据的表示:

 

      数值1

    数值-1

    1-1

   原码

0000 0001

1000 0001

1000 0010

   反码

0000 0001

1111 1110

1111 1111

   补码

0000 0001

1111 1111

0000 0000

   移码

1000 0001

0111 1111

1000 0000

 

  原码:把一个数转成二进制形式,二进制不足8位即在左边补零。最左边的位又叫做符号位,正数为0,负数为1 。如图,在原码中 1+(-1)=-2,可见原码不能直接相加减。于是引入反码类计算。

  反码:反码正数值和原码相同,不用转换。负数值除符号位(最左边)外,其余取反( 0—>1,1—>0)。根据图中把1+(-1)反码相加减可以看等于0是正确的。

  补码:补码正数值也和原码相同,不用转换。负数值在反码基础上在最低位加 1 即可。

  移码:在补码基础上,把补码符号位取反  即可,其余不做改变。

 

数值表示范围:

 

 

               整数

  原码

  -(2n-1-1)~2n-1-1

  反码

  -(2n-1-1)~2n-1-1

  补码

  - 2n-1 ~ 2n-1-1(大一个范围)

为什么补码大一位呢?

  答:因为原码和反码有两种0 :

  正0{原码:0000 0000 ,反码:0000 0000}

  负0{原码:1000 0000 ,反码:1111 1111}

  而补码0只有唯一的表示(0000 0000),而(1000 0000)被人为定义为最小负数,即-128。所以补码能表示的真值比原码多      一个。


版权声明:本文为weixin_44609873原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。