[toc]
1. 变补:
$[-Y]_{补}$被称为$[Y]_{补}$的机器负数,由$[Y]_{补}求[-Y]_{补}$的过程称为对[Y]补的变补
表示为:$[-Y]_{补} = [[Y]_{补}]_{变 补}$
2. 补码与变补的区别
一个负数由原码转换为补码时,符号位是不变的,仅对数值求补,而变补则不论这个数的正值是正是负,一律连同符号位取反,末位加1
在补码的加减法中,若做加法则两数直接相加,若做减法,则将被减数与减数的机器负数相加,运算结果用补码表示
表示为$[X]_{补} - [Y]_{补} = [X]_{补} + [-Y]_{补} = [X]_{补} + [[Y]_{补}]_{变 补}$
注意:
最后答案要写出真值,除非题目写了求的是补码等
3. 溢出
若X,Y异号,不会溢出
若X,Y同号,运算结果超出所能表示的范围是,溢出,大于最大正数称为正溢,小于最小负数称之为负溢
3.1 检测溢出
3.1.1 单符号位:
当两个同号的数值进行加减操作后,所得到的结果的符号位与之不同时,则发生了溢出。
缺点:如果符号位的后一位在运算过后产生了进位,可能会影响检测溢出结果的正确性
3.1.2 采用进位位
在考虑了进位对符号位的影响后,进行改进得到的
如果符号位产生进位而最高有效位没有进位时,发生负溢
如果符号位没有进位,而最高有效位发生进位时,发生正溢
3.1.3 采用变形补码(双符号位补码)
双符号位的含义如下:
$S_{S1}S_{S2}=00$,结果为正数,无溢出
$S_{S1}S_{S2}=01$,正溢
$S_{S1}S_{S2}=10$,负溢
$S_{S1}S_{S2}=11$,结果为负数,无溢出