2019/03/16 13:48
4.1定点数的加减运算及实现
1)补码的加减运算:
<1>[X + Y]补 = [X]补 + [Y]补
<2>[X - Y]补 = [X]补 + [-Y]补
由补码[Y]到[-Y],首先应该转化为二进制的真值,然后在加上负号变成[-Y];
2)补码加减的溢出判断:
关于是正溢还是负溢,看原来的正确的值是正的就是正溢,否则反之;
关于溢出的初级判断,同号相加和异号相减才会发生溢出;
<1>单符号位判溢出
<2>进位判溢出的方法;就是看符号的最高位和进位的符号不相同就发生了溢出。看进位符号是啥溢出看进位的符号即可。
<3>双符号(又叫模4补码和变形补码)为判溢出的方法,如果进位的两个符号相异则发生溢出,且看第一位的符号是啥溢出。
3)机器数的位移运算
<1>逻辑移位:正常操作,无论是高位还是低位都是补零,且不带符号。
<2>算术移位:是带符号的移位,
原码:符号位不变,左移就是低位补零,当左移的处的数据位为1时,发生溢出。右移就是符号位不变,然后低位移出,高位补零。
补码:左移符号位不变,高位移出,低位补零,如果移出的数据位正数为“1”负数为“0”时发生溢出。保证补码左移不溢出,最高数据位移出必须与符号位相同。算术右移,就是低位移出,高位正数补零,负数补1,即高位补符号位。
反码:算术左移时,最高有效位直接移入符号位,低位正数补“0”,负数补“1”,即补符号位;算术右移时,符号位不变,高位补符号位,低位移出。
4)移码的加减运算与判溢
其实就是减数变成了补码,其余按移码的来,就是这样操作。(这是加减运算)
对于判溢,也是按照双位判溢法,但是符号位最高位恒为0,然后后一位按照符号来,当结果的最高位为1时发生溢出,然后是正溢还是负溢看第二位如果是0,那么是正溢,否则反之。