补码的加减法运算

您所在的位置:网站首页 定点数运算溢出的原因 补码的加减法运算

补码的加减法运算

2023-05-18 20:37| 来源: 网络整理| 查看: 265

补码的加减法运算 1 补码的加法

举个栗子

1.1 正数加正数

正数的补码、原码表示形式一致

x = +3, y = +4 [3]_原 = 0,0011 [3]_补 = 0,0011 [4]_原 = 0,0100 [4]_补 = 0,0100 ------------------- 0,0011 + 0,0100 = 0,0111 //补码: 0,0111转换为 原码: 0,0111 = 7 结果正确 1.2 负数加正数

负数的补码转化为原码,符号位不变,数值位全部取反 + 1

x = -8, y = 7 [-8]_原 = 1,1000 [-8]_补 = 1,1000 [7]_原 = 0,0111 [7]_补 = 0,0111 ------------------- 1,1000 + 0,0111 = 1,1111 //补码: 1,1111 转换为 原码: 1,0001 = -1 结果正确 2 补码的减法

举个栗子

2.1 正数减正数

减去一个补码可以认为加上它相反数的补码,例如 3 - 4 == 3 + (-4) 相反数的补码等于,原数补码的全部位数取反 + 1,例如 0,0011 -> 1,1101 0,0100 -> 1,1011 + 1 -> 1,1100

x = +3, y = +4 [3]_原 = 0,0011 [3]_补 = 0,0011 [4]_原 = 0,0100 [4]_补 = 0,0100 [-4]_补 = 1,1100 ------------------- 3 - 4 = 3 + (-4) 0,0011 + 1,1100 = 1,1111 //补码: 1,1111转换为 原码: 1,0001 = -1 结果正确 2.2 负数减正数

-8 - 7 = -8 + (-7)

x = -8, y = 7 [-8]_原 = 1,1000 [-8]_补 = 1,1000 [7]_原 = 0,0111 [7]_补 = 0,0111 [-7]_补 = 1,1001 ------------------- 1,1000 + 1,1001 = 1 1,0001 //算术溢出 //只取,补码: 1,0001 转换为 原码: 1,1111 = -15

为什么此时会发生溢出呢?

因为,在此处机器字长我们自认为1个bit(符号位不算在内),也就是如果超出了1bit那么就算溢出 第一次写博客,有错误可以在评论提出,感谢!


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3