试题(3)
如果“2X”的补码是“90H”,那么X的真值是:
A:72
B:-56
C:56
D:111
答案:B
解析:这是一道有关原码、反码、补码的综合问题,如果不了解的话建议大家先去学习一下,然后再过来看解析可能会更容易理解。这里给出一些简单的定义:
原码:原码就是二进制的最高位为符号位,正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
反码:正数的反码与其原码相同;负数的反码是对其各位数逐个取反,符号位保持为1。
补码:符号位不变,正数的补码与其原码、反码一致,负数的补码为其反码加1。
有了这些概念的基础,咱们就对这道题进行分析吧~
1.“90H”即十六进制数16,化为十进制为:9×16的1次方+0×16的零次方=144;
2.十进制数144化为二进制为:10010000,最高位为1,所以该补码为负数(因为无论是正数还是负数,在转成补码的过程中其符号位一直都未发生改变,所以可以判断该补码为负数,即其对应的原码也为负数。其实分析到这里也可以选出答案啦…);
3.上面分析得到补码为:10010000且为负数,所以可知其反码为:10001111(负数的补码为其反码加1,10001111加1即为10010000);
4.根据反码:10001111可得原码:11110000(符号位不变,负数的反码为其原码按位逐个取反,同理这里逆推回去:根据反码得到原码);
5.得到原码:11110000,化为十进制位(注意!!!原码最高位表示符号位!):-(2的6次方+2的5次方+2的4次方)= -(64+32+16)= -112;
6.所以2X= -112,即X= -56。