第二章

在计算机内部,所有的带符号数在进行加减运算之前,一定会先转换成补码的形式
补码→原码转换
原码 → 反码
正数:反码 = 原码
负数:符号位不变,其他位取反
例: -5 原码:1000 0101 → 反码:1111 1010
原码 → 补码
正数:补码 = 原码
负数:符号位不变,其他位取反后 +1
例: -5 原码:1000 0101 → 取反:1111 1010 → 补码:1111 1010 + 1 = 1111 1011
补码 → 原码
正数:原码 = 补码
负数:符号位不变,其他位取反后 +1
例: -5 补码:1111 1011 → 取反:1111 1011 → 1000 0100 → +1:1000 0101(原码)
负数补码转换为原码简便方法:最右边的1及其右边同原码,左边同反码
补码→补码
[-X]补:[X]补 连同符号位一起取反加1
带符号数(补码)的减法:
①“被减数”不变 ,“减数”全部位按位取反、末位+1,减法变加法
②从最低位开始,按位相加,并往更高位进位
计算机判断溢出的方法:
无符号数加法的溢出判断:最高位产生的进位=1时,发生溢出,否则未溢出。
无符号数减法的溢出判断:减法变加法,最高位产生的进位=0时,发生溢出,否则未溢出
若机器字长n+1位,原码整数的表示范围: −(2n−1) ≤ x ≤ 2n−1(关于原点对称)
若机器字长n+1位,补码整数的表示范围: −2n ≤ x ≤ 2n−1 (比原码多表示一个−2n)
注意这里的2n指的是表示的位数