欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

二进制中的原码,反码,补码

程序员文章站 2022-07-15 09:41:38
...

二进制中的原码,反码,补码

  1. .正数的原码,反码,补码都一样

  2. 负数:
    原码—先找负数的原码
    反码-----根据原码找反码---------原码符号位不变,其他位取反
    补码------根据反码找补码---------反码+1

  3. 例如:1-2====1+(-2)
    (1):1的补码+(-2)的补码
    (2):将计算结果的补码转换为原码(将步骤2反过来)
    (3):得到的原码转换为10进制

  4. (1)正数相加:

       例如:1+1 ,在计算机中运算如下:
    
       1的原码为:
    
       00000000  00000000  00000000  00000001
    
       因为“正数的原码、反码、补码都一样”,所以,1的补码 = 1的原码,所以 1的补码+ 1的补码 就等于:
    
       00000000  00000000  00000000  00000001
    
       +
    
       00000000  00000000  00000000  00000001
    
       =
    
       00000000  00000000  00000000  00000010
    
       00000000  00000000  00000000  00000010( 转换为10进制) = 0*2^0 + 1*2^1 = 0 + 2 =2 
    

    (2)正数相减:

       例如:1-2,在计算机中运算如下:
    
       在计算机中减运算其实是作为加运算来操作的,所以,1-2 = 1 + ( -2 )
    
       第一步:把 1补码找出来(因为正数的原码、反码、补码都一样,所以我们可通过原码直接获取补码):
    
         1的补码:
    
         00000000   00000000   00000000   00000001
    
       第二步:把-2的原码找出来:
    
         -2的原码:
    
         10000000   00000000   00000000   00000010
    
       第三步:把-2的反码找出来:
    
         -2的反码:
    
         11111111     11111111     11111111     11111101
    
       第三步:把-2的补码找出来:
    
         -2的补码:
    
         11111111     11111111     11111111     11111110
    
       第四步:1的补码与-2的补码相加:
    
          00000000   00000000   00000000   00000001
    
          +
    
          11111111     11111111     11111111      11111110
    
          =
    
          11111111     11111111     11111111      11111111
    
       第五步:将计算结果的补码转换为原码,反其道而行之即可(如果想将二进制转换为十进制,必须得到二进制的原码)
    
          补码:11111111     11111111     11111111      11111111
    
          =
    
          反码:11111111     11111111     11111111      11111110
    
          =
    
          原码:10000000  00000000   00000000    00000001
    
      第六步:将计算结果的二进制原码 转换 为十进制
    
          二进制原码:10000000  00000000   00000000    00000001  =  1*2^0 =  -1