已知补码如何求原码、真值
已知补码求真值
定点整数
正数
正数的原码、补码、反码都是一样的
负数
负数的原码就是补码的补码
如何求补码
最高位是符号位,符号位保持不变,其余位取反,取反后末位+1,得到的就是补码
例题
例题1
[ x ] 补 = 10101 [x]_补 = 10101 [x]补=10101
-
最高位为
1
(10101),说明x
是一个负数 -
那么
[x]补
的反码为(符号位不变,其余按位取反):
11010 11010 11010 -
[x]补
的补码为[x]补
的反码末位+1
11011 11011 11011 -
所以
x
的原码为11011
,真值为:
− 1 × ( 1 × 2 3 + 0 × 2 2 + 1 × 2 1 + 1 × 2 0 ) = − ( 8 + 2 + 1 ) = − 11 -1 × ( 1×2^{3} + 0×2^{2} + 1×2^{1} + 1×2^{0}) \\ = -(8 + 2 + 1) = -11 −1×(1×23+0×22+1×21+1×20)=−(8+2+1)=−11
例题2
[ x ] 补 = 00111 [x]_补 = 00111 [x]补=00111
-
因为最高位为
0
(00111),说明x
是一个正数 -
正数的原码、反码、补码都相同
-
所以
[x]原
= 00111 -
x
的真值为:
1 × 2 3 + 1 × 2 2 + 1 × 2 0 = 7 1×2^{3} + 1×2^{2} + 1×2^{0} = 7 1×23+1×22+1×20=7
例题3
[ x ] 补 = 11100 [x]_补 = 11100 [x]补=11100
-
最高位为
1
(11100),说明x
是负数 -
[[x]补]反
(x补码的反码) = 10011 -
[[x]补]补
(x补码的补码) =[[x]补]反
末位+1 =10100
-
x
的真值 = -22 =-4
定点小数
- 定点小数中正数的格式为
0.xxxx
,负数的格式为1.xxxxx
也就是小数点左侧的第一位是符号位
正数
正数的原码、补码、反码都一样
负数
负数的原码就是补码的补码
例题
例题1
[ x ] 补 = 1.1100 [x]_补 = 1.1100 [x]补=1.1100
-
符号位位
1
(1.1100),说明x
是负数 -
[[x]补]反
= 1.0011 -
[[x]补]补
=[[x]补]反
末位+1 = 1.0100 -
x
的真值 =-0.25
例题2
[ x ] 补 = 0.1110 [x]_补 = 0.1110 [x]补=0.1110
-
x
的符号位为0
(0.1110),说明x
是正数 -
所以
[x]原
=[x]补
= 0.1110 -
x的真值
= 0.5 + 0.25 + 0.125 =0.875
例题3
[ x ] 补 = 1.0000 [x]_补 = 1.0000 [x]补=1.0000
- 这是一个较为特殊的补码,真值为
-1
- 事实上,负数的补码就是其绝对值的补数(a+b=模,则a与b互为补数)
更多推荐
所有评论(0)