二进制中的原码,反码,补码
程序员文章站
2022-07-15 09:41:38
...
二进制中的原码,反码,补码
-
.正数的原码,反码,补码都一样
-
负数:
原码—先找负数的原码
反码-----根据原码找反码---------原码符号位不变,其他位取反
补码------根据反码找补码---------反码+1 -
例如:1-2====1+(-2)
(1):1的补码+(-2)的补码
(2):将计算结果的补码转换为原码(将步骤2反过来)
(3):得到的原码转换为10进制 -
(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