1数据在计算机中都是以补码的形式存在的,它们的运算规则是什么?
(1)对于无符号数加法而言,直接相加即可,最后会增加一位溢出位。
(2)对于无符号数减法而言,因为计算器中只有加法器,所以要把减法转为加法
无符号数求补码,最高位也需要求反,因为它是数值位
(3)有符号数加法,在有符号数加法中,符号位也要参与运算,比如下图中的m与n符号位1+1=0,这在我们看来是不合常理的,因为两个负数相加得到了一个整数。但它在计算机中是合理的,因为这代表结果溢出
(4)对于有符号数减法而言,只需要把它转化为有符号数加法即可,(a-b)的补码等于a的补码+(-b)的补码
2有符号整数加减运算的溢出判断规则位:若加法器的两个输入端的符号相同,且不同于输出端的符号,则结果溢出,或加法器完成加法操作时,若最高数位的进位和符号位的进位不同则溢出
溢出位为1表示溢出,为0表示不溢出
3定点小数的补码运算
4逗号表示多出来的符号位
5补码定点数加减法运算
6计算机中减法都被转换为加法运算
很显然不可能由于减法而产生进位标识符,所以进位标志符就是在暗示所有的减法操作都被转换为了加法操作
7无论是无符号数还是有符号数,*2所导致的左移中,符号位也要参与移动
对于乘除2导致的移位,左移补0,右移补符号位
这个相当于算术右移,而非逻辑右移
判断溢出的另一个办法就是比较范围