大一下计算系统基础笔记
W2
1.补码计算溢出的判断:
a的补码+b的补码=(a+b)的补码
最高位和次高位只有一个进位的时候,才有溢出,其余情况没有溢出,结果都正确
最简单的理解方式:正数+正数,负数+负数,如果符号变了就溢出了
正+负永远不溢出
从原理上来看,计算机用补码表示数字,只有最高位进位没有次高位进位的时候会产生溢出,但是最高位和次高位同时进位的时候没有溢出
因为
最高位(符号位)进位而次高位(真值最高位)没有进位时,一定是2个负数相加,进位后产生负溢出,即两个负数相加产生正数
次高位进位而最高位没有进位时,一定是2个正数相加,进位后使符号位产生改变(正溢出),俩正数相加产生负数
最高位和次高位同时进位时,一定是次高位的进位导致最高位再次进位,即一正一负相加,比如11111111(-1)+00000001(+1)最高位进位,但结果依然正确,没有发生溢出
所以有进位不一定溢出,有溢出不一定(最高位)进位
2.二进制补码的计算
当位数不一致的时候,需要补位。下有例子:
给出下列补码整数加法运算的十进制结果并判断是否溢出。
1010+101
1010+1101=0111=7,答案为7,此时溢出
1100+00110011
11111100+00110011=(1)00101111,答案为47,没有溢出。