补码求真值的步骤如下:
如果补码的最高位是0, 那么原码就是补码, 那么真值就是对应的十进制的值。
如果补码的最高位是1, 那么原码就是补码的反码+1, 真值就是对应的十进制的值的相反数。
如补码是 0101, 那么真值就是 4 + 1 = 5。
如补码是1010, 那么反码就是0101, +1以后是0110, 所以对应的十进制是4+2=6, 所以真值就是-6。
补码(two's complement) 的介绍如下:
1、在计算机系统中,数值一律用补码来表示(存储)。
主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
2、补码与原码的转换过程几乎是相同的。
如果补码的最高位是0, 那么原码就是补码, 那么真值就是对应的十进制的值
如果补码的最高位是1, 那么原码就是补码的反码+1, 真值就是对应的十进制的值的相反数
如补码是 0101, 那么真值就是 4 + 1 = 5
如补码是1010, 那么反码就是0101, +1以后是0110, 所以对应的十进制是4+2=6, 所以真值就是-6
一个正数的补码是其本身,如8位(一个字节)2是:0000 0010,其补码也是0000 0010。
一个负数的补码是其对应的绝对值的补码取反加一,-1的补码是1111 1111,这个值是这么获得的:-1的绝对值是1,1的补码是0000 0001,安位取反是1111 1110,加1后就是1111 1111。
如果想知道1111 1111对应的数到底是多少,可以这么计算,如果这个数的第一位是1表示负数,也就是1111 1111是负数,这是数安位取反加1,就是这个负数对应的绝对值,即:1111 1111取反是0000 0000,加1是0000 0001,这个数是1111 1111的绝对值,所以1111 1111对应的值是-1。
补码是这样计算的:
首位为符号位。
符号位为0表示正数,正数的补码=原码=反码。
符号位为1表示负数,负数的补码等于将符号位后面的位全部取反再加1。另外,一个数的补码的补码等于这个数的原码,所以如果已知一个数的补码,那么对这个补码求一次补码即可得到这个数的原码。
前面已经说了,负数的补码等于符号位后面的位全部取反再加1,所以11010101取反(符号位不变)为10101010,再加1,得到10101011,此即为原真值的原码,由此很容易得到真值为:
-(32+8+2+1)= -43
知道补码,求真值,是非常简单的。
你不用求“反码原码”。你也不用想着“符号位不变”。
“取反加一”或“减一取反”,都是不需要的。
你就直接进行“数制转换”即可。
比如:有一个八位的补码,是 1000 1110。
首位 1,既代表负数,也代表-128。
其余都是正数:8 + 4 + 2 = 14。
求总和,故其真值就是:-114。
----------
另一个八位的补码,是 0000 1110。
其真值就是:8 + 4 + 2 = 14。