3.进位与溢出的进一步说明
计算机所进行的运算都是无符号数运算,既把有符号数的符号位当做数值进行运算,又把所有数的运算结果当做有符号数来影响溢出标志位。一个数被看做有符号数,还是无符号数,只能靠用户在编写程序时做到“心中有数”。对于8位二进制数,进位与溢出的情况如下:
1)看作无符号数时,其表示范围是0~255(00H~FFH),当两数进行加法运算,超出这个范围,即最高位有进位,则进位标志位置1,否则清0;进行减法运算时,最高位产生借位时,进位标志位置1,否则清0。
2)看作有符号数,其表示范围是-128~+127(80H~7FH),当运算结果超出这个范围时溢出,溢出标志位置1,否则清0。
当然,如前所述,不论是有符号数,还是无符号数,单片机都按有符号数来置位溢出标志位,按无符号数来置位进位标志位,只是看作不同的数时,关注的重点不一样。