一个正数的补码是其本身,如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。
补码的求法是原码取反加一,如果知道补码可以减一取反就可以。注意,负数最高位为1,取反的时候符号位不变。
由补码求真值,是非常简单的事。
你既不用求“反码原码”,也不用想着“符号位不变”。
“取反加一”或“减一取反”,都是不需要的。
你就直接进行【数 制 转 换】即可。
已知八位补码是 1011 1001。
首位 1,既代表了负号,也代表数值-128。
其余都是正数:32 + 16 + 8 + 1 = 57。
求总和,立刻就求出真值:-71。