原码、补码、反码、移码的计算

原码

计算步骤:

  • 先化为2进制
  • 正数不用计算在前面加0(就是他本身),负数在前面加1

如:

  • x = + ( 1001 )2 , 则 [x] = ( 01001 )2
  • x = - ( 1001 )2 , 则 [x] = ( 11001 )2

案例:求 - 13 / 64 的原码
-13/64=-(8+4+1)/64=-(1/8+1/16+1/64)=(-0.001101)2,所以[x]=1.001101
解释:1/8 = 2-3 化为2进制为 (0.001)21/16= (0.0001)21/64= (0.000001)2

反码

计算步骤:

  • 先化为2进制
  • 正数不用计算在前面加0(就是他本身),负数在前面加1
  • 每一位数都进行2进制的取反(1 取反为 0 ,0取反为1)

如:

  • x = + ( 1001 )2 , 则 [x] = ( 01001 )2
  • x = - ( 1001 )2 , 则 [x] = ( 10110 )2

案例:求 - 13 / 64 的反码
-13/64=(-0.001101)2,所以[x]=1.110010

补码

计算步骤:

  • 正数不用计算在前面加0(就是他本身)
  • 负数计算:
    • 方法一(最简单):反码最后一位(2进制最后)+ 1
    • 方法二:用公式
      • 小数:[x] = 2 - | x |
      • 整数:[x] =2 n+1 - | x | , -2 n <= x <= 0

只演示方法一(方法二要记公式):
如:

  • x = + ( 1001 )2 , 则 [x] = ( 01001 )2
  • x = - ( 1001 )2 , [x] = ( 10110 )2,[x] = ( 10111 )2

案例:求 - 13 / 64 的补码
-13/64=(-0.001101)2,[x]=1.110010 ,所以[x]=1.110011

移码

计算步骤:

  • 方法一(简单):在补码的基础上,符号位取反
  • 方法二:[e] = 2k + e , -2k <= e <= 2k

只演示方法一(方法二要记公式):
如:

  • x = + ( 1001 )2 , [x] = ( 01001 )2,[x] = ( 11001 )2
  • x = - ( 1001 )2 , [x] = ( 10110 )2,[x] = ( 10111 )2,[x] = ( 01001 )2

案例:求 - 13 / 64 的补码
-13/64=(-0.001101)2,[x]=1.110010 ,[x]=1.110011 ,[x]=0.110011

你可能感兴趣的:(计算机组成原理,计算机网络)