24和30的原码、反码、补码-查字典问答网
分类选择

来自程伟明的问题

  24和30的原码、反码、补码

  24和30的原码、反码、补码

1回答
2020-02-06 10:11
我要回答
请先登录
卢翔

  请我给你的详原码、补码和反码

  (1)原码表示法

  原码表示法是机器数的一种简单的表示法.其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示.设有一数为x,则原码表示可记作〔x〕原.

  例如,X1=+1010110

  X2=一1001010

  其原码记作:

  〔X1〕原=[+1010110]原=01010110

  〔X2〕原=[-1001010]原=11001010

  原码表示数的范围与二进制位数有关.当用8位二进制来表示小数原码时,其表示范围:

  最大值为0.1111111,其真值约为(0.99)10

  最小值为1.1111111,其真值约为(一0.99)10

  当用8位二进制来表示整数原码时,其表示范围:

  最大值为01111111,其真值为(127)10

  最小值为11111111,其真值为(-127)10

  在原码表示法中,对0有两种表示形式:

  〔+0〕原=00000000

  [-0]原=10000000

  (2)补码表示法

  机器数的补码可由原码得到.如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的.设有一数X,则X的补码表示记作〔X〕补.

  例如,[X1]=+1010110

  [X2]=一1001010

  [X1]原=01010110

  [X1]补=01010110

  即[X1]原=[X1]补=01010110

  [X2]原=11001010

  [X2]补=10110101+1=10110110

  补码表示数的范围与二进制位数有关.当采用8位二进制表示时,小数补码的表示范围:

  最大为0.1111111,其真值为(0.99)10

  最小为1.0000000,其真值为(一1)10

  采用8位二进制表示时,整数补码的表示范围:

  最大为01111111,其真值为(127)10

  最小为10000000,其真值为(一128)10

  在补码表示法中,0只有一种表示形式:

  [+0]补=00000000

  [+0]补=11111111+1=00000000(由于受设备字长的限制,最后的进位丢失)

  所以有[+0]补=[+0]补=00000000

  (3)反码表示法

  机器数的反码可由原码得到.如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的.设有一数X,则X的反码表示记作〔X〕反.

  例如:X1=+1010110

  X2=一1001010

  〔X1〕原=01010110

  [X1]反=〔X1〕原=01010110

  [X2]原=11001010

  [X2]反=10110101

  反码通常作为求补过程的中间形式,即在一个负数的反码的未位上加1,就得到了该负数的补码.

  例1.已知[X]原=10011010,求[X]补.

  分析如下:

  由[X]原求[X]补的原则是:若机器数为正数,则[X]原=[X]补;若机器数为负数,则该机器数的补码可对它的原码(符号位除外)所有位求反,再在未位加1而得到.现给定的机器数为负数,故有[X]补=[X]原十1,即

  [X]原=10011010

  [X]反=11100101

  十)1

  [X]补=11100110

  例2.已知[X]补=11100110,求〔X〕原.

  分析如下:

  对于机器数为正数,则〔X〕原=〔X〕补

  对于机器数为负数,则有〔X〕原=〔〔X〕补〕补

  现给定的为负数,故有:

  〔X〕补=11100110

  〔〔X〕补〕反=10011001

  十)1

  〔〔X〕补〕补=10011010=〔X〕原

  或者说:

  数在计算机中是以二进制形式表示的.

  数分为有符号数和无符号数.

  原码、反码、补码都是有符号定点数的表示方法.

  一个有符号定点数的最高位为符号位,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

2020-02-06 10:12:16

最新问答

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •