1. 由原码求补码
1.1 正数:
正数的原码=补码=反码
1.2 负数:
负值则逐位取反,末位加1
[- 10101010]补
=1 01010101 +1
=1 01010110
[-0.010101]补
= 1.101010
- 0.000001
= 1.101011
**Note:**补码的最高位为符号位;0为正,1为负
2. 由补码求真值
- 补码的最高位如果是0,则是正数,补码原码反码都一样
- 如果最高位是1,则代表是负数
举例:
补码为1.0000000,求原码
方法:
1.是负数,进行下一步,若为正数,加个正号+
2.对所有位取反,在做末位加1
3.再加上负号 -
所以真值为:
0.1111111
1.0000000
-1.0000000(最终结果)
3.已知 [ Y ] 补 [Y]_补 [Y]补,求 [ − Y ] 补 [−Y]_补 [−Y]补
方法一:将
[
Y
]
补
[Y]_补
[Y]补包括符号位全部取反,最后+1(机器内部做法)
方法二:从右向左扫描,碰到第一个1,则1之前扫描的数原样输出,后面扫描的取反输出。(适合手算)