汇编学习-补码

计算机中表示有符号数

假设计算机字长位8,最高位为1表示负数

+5  ====》 0000 0101

-5 =====》 1000 0101


补码的原理

例如:假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨4小时,即:10-4=6;另一种是顺拨8小时:10+8=12+6=6
在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。对“模”而言,8和4互为补数。实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特性。共同的特点是两者相加等于模。
对于计算机,其概念和方法完全一样。n位计算机,设n=8, 所能表示的最大数是11111111,若再加1成为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位 二进制系统的模为2^8。在这样的系统中 减法问题也可以化成加法问题,只需把 减数用相应的 补数表示就可以了。把补数用到计算机对数的处理上,就是补码。


补码的好处
使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理

补码的求法:
正数的补码是其本身, 负数的补码符号位保持不变,其余位求反后加1

根据补码求原码:
补码再求补码即为原码
补码最高位为0表示正数,原码和补码相同;
补码最高位为1表示负数,最高位不变,其余位求反后加1

【例7】1-1 [十进制]
1的原码00000001 转换成补码:00000001
-1的原码10000001 转换成补码:11111111
1+(-1)=0
00000001+11111111=00000000
00000000转换成十进制为0
0=0所以运算正确。
【例8增】-7-(-10) [十进制]
改为加法形式:-7-(-10)=-7+(-(-10))
-7的补码:11111001
-(-10)的补码:-10的原码为10001010,-(-10)的原码为00001010,
-(-10)的补码就是其原码,为00001010
-7 - (-10)= -7 + 10 = 3
11111001+00001010 = 00000011
转换成十进制为3






你可能感兴趣的:(汇编学习-补码)