http://www.cnblogs.com/wxf0701/archive/2008/08/14/1267639.html
在计算机系统中,数值一律用补码
来表示(存储)。
主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补
码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
补码与原码的转换过程几乎是相同的。
已知原码求补码
数值的补码表示也分两种情况:
(1)正数的补码:与原码相同。
例如,+9的补码是0000 1001。
(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
例如,-7的补码:因为是负数,则符号位为“1”,整个为10000111;其余7位为-7的绝对值+7的原码
000 0111按位取反为111 1000;再加1,所以-7的补码是1111 1001。
已知一个数的补码,求原码的操作分两种情况:
(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。
(2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1。
例如,已知一个补码为1111 1001,则原码是1000 0111(-7):因为符号位为“1”,表示是一个负数,所以该位不变,仍为 “1”;其余7位111 1001取反后为000 0110;再加1,所以是1000 0111。