四、补码正数的补码表示与原码相同,即最高位为符号位,用"0"表示正,其余位为数值位。如【+4】补=【+4】原=【+4】反=0 0 0 0 0 1 0 0 【+127】补=【+127】原=【+127】反=0 1 1 1 1 1 1 1 负数的补码表示为它的反码,并在其最后位(即最低位)加1形成。如【+4】原=0 0 0 0 0 1 0 0 【-4】反=1 1 1 1 1 0 1 1 是+4各位取反【-4】补=1 1 1 1 1 1 0 0 反码+1 【+31】原=0 0 0 1 1 1 1 1 【-31】反=1 1 1 0 0 0 0 0 【-31】补=1 1 1 0 0 0 0 1 【+0】原=0 0 0 0 0 0 0 0 【-0】反=1 1 1 1 1 1 1 1 【-0】补=0 0 0 0 0 0 0 0 8位带符号数的补码特点:(1)【+0】补=【-0】补=0 0 0 0 0 0 0 0 (2)8位二进制补码所能表示的数值为+127~-128 (3)一个用补码表示的二进制数,最高位为符号位。当符号位为"0"(即正数)时,其余七位即为此数的二进制值;当符号位为"1"(即负数)时,其余几位不是此数的二进制值,把它们按位取反,且在最低位加1,才是它的二进制值。 如:【X】补=1 0 0 1 0 1 0 0 是负数,它的数值为0 0 1 0 1 0 0 按位取反,得1 1 0 1 0 1 1,然后再加1为1 1 0 1 1 0 0=(108)10 当负数采用补码表示时,就可以把减法转换为加法。例如: 64-10=64+(-10)=64+【-10】补+64=0 1 0 0 0 0 0 0 10=0 0 0 0 1 0 1 0 【-10】补=1 1 1 1 0 1 1 0 减法运算: 64 0 1 0 0 0 0 0 0 -10 - 0 0 0 0 1 0 1 0 -------------- ----- ------------------------------------------------------------------------------------- 54 0 0 1 1 0 1 1 0 补码加法:64 0 1 0 0 0 0 0 0 +【-10】补 ------> (+) 1 1 1 1 0 1 1 0 -------------- ----- ---------------------------------------------------------------------------------------------- 1 0 0 1 1 0 1 1 0 此1自然丢失。在8位字长的单字节运算中第7位的进位,自然丢失。例:34-68=34+【-68】补【34】补=0 0 1 0 0 0 1 0 【+68】补=0 1 0 0 0 1 0 0 【-68】补=1 0 1 1 1 1 0 0 34 0 0 1 0 0 0 1 0 +(-68) + 1 0 1 1 1 1 0 0 -------------- ----- ------------------------------------->-------------------------------------------------------------- - 34 1 1 0 1 1 1 1 0 符号位为1,肯定结果为负,其数值部分为0 1 0 0 0 1 0=34 所以结果是-34 在微型机中,凡是带符号数一律是用补码表示的,所以,其运算结果也是补码。当字长为8位时,其范围为+127~-128。当运算结果超出这个表达范围时,结果就不正确了,这就称为溢出。这时要用多字节来表示。 |