定点加减
加法
-
对于 x=+1001,y=+0101 ,求 x+y
[x]补=01001,[y]补=00101[x+y]补=01110
移除补位的第一个 0 即可等价于 9+5=14
-
对于 x=+1011,y=−0101 ,求 x+y
[x]补=01011,[y]补=11011[x+y]补=100110
移除补位的第一个 0 即可等价于 11−5=6
减法
减法可以被视为加法,即
[x−y]补=[x+(−y)]补=[x]补+[−y]补[y]→[−y] 的过程为各位取反,末为加一,如加法的例2
- 对于 x=+1101,y=+0110,求 x−y
[x]补=01101,[y]补=00110,[−y]补=11010[x−y]补=[x]补+[−y]补=100111
取后四为即可等价于 13−6=7
溢出判断
由于数据的取值范围有限,溢出难以避免,在有限的条件下所能做的也只是判断是否溢出,较大的正数相加会正溢,较小的负数相加会负溢,判断方法是采用变形补码,11 代表正,00 代表负,运算后为 01 即为正溢,10 即为负溢
- 对于 x=+1100,y=+1000 ,求 x+y
[x]补=001100,[y]补=001000[x+y]补=010100
补码为 01 可以判断为正溢
- 对于 x=−1100,y=−1000 ,求 x+y
[x]补=110100,[y]补=111000[x+y]补=101100
补码为 10 可以判断为负溢。注意这里的 x 和 y 都是负数,所以遵循之前的各位取反,末为加一规则
定点乘除
乘法
符号位运算:同号为正,异号为负,数字位运算与十进制无异
- 对于 x=15,y=−13
[x]=1111,[y]=1101[x∗y]=11000011
取后五位即可等价于 15∗−13=−195
除法
除法的运算较为复杂,等待后续补充