补码是这样计算的:
首位为符号位。
符号位为0表示正数,正数的补码=原码=反码。
符号位为1表示负数,负数的补码等于将符号位后面的位全部取反再加1。另外,一个数的补码的补码等于这个数的原码,所以如果已知一个数的补码,那么对这个补码求一次补码即可得到这个数的原码。
前面已经说了,负数的补码等于符号位后面的位全部取反再加1,所以11010101取反(符号位不变)为10101010,再加1,得到10101011,此即为原真值的原码,由此很容易得到真值为:
-(32+8+2+1)= -43
知道补码,求真值,是非常简单的。
你既不用求“反码原码”,也不用想着“符号位不变”。
“取反加一”或“减一取反”,都是不需要的。
你就直接进行【数 制 转 换】即可。
比如:
有一个八位的补码:1001 1110。
首位 1,既代表负数,也代表-128。
其余都是正数:16 + 8 + 4 + 2 = 30。
求总和,故其真值就是:-98。
----------
另一个八位的补码:0001 1110。
其真值就是:16 + 8 + 4 + 2 = 30。
这就是详细步骤!
简单不简单?
意外不意外?
参考:网页链接。