负数在实际应用时多采用补码来表示,求一个负数-A时,可以先求出A得二进制xxxx,之后对每一位取反后在对结果加1即得到-A得补码,下面用4位来演示
3的二进制为0011,按位取反后为1100,加1后为1101,即-3的补码为1101
下面来通过数学来证明方法的正确性
对应任意4bit的数字,其二进制表示为abcd
对于正数,其最高有效位为0,即a=0, 所以正数A=4b + 2c + d;
按位取反后按照补码即可得到B=-8 + 4(1-b) + 2(1-c) + 1(1-d),负数的最高有效位为1,其他位按位取反即为1-x,例如本身位0,取反后位1=1-0,本身位1,取反后0=1-1
A+B = 4b + 2c + d -8 + 4(1-b) + 2(1-c) + 1(1-d) = -1,即对即对应的负数为B+1,所以按位取反加1即可得到补码;