二进制数使用补码将减法化为加法个人思路

  • 时间:
  • 浏览:
  • 来源:互联网

在学习二进制计算时,实际计算机中使用补码来存负数,从而将所有的减操作都化为加操作,我当时有个疑问,为什么能够带带符号操作室所有的符号位都能被正确的表示出来,

举个例子:
10-1时 用2进制表示
(0)1010 + (1)0001 等价于 01010 + 11111 (补码形式)

通过了解mo的概念 我能够理解了将减法变为加法 可是为什么能带符号计算???
参考 https://blog.csdn.net/zhuozuozhi/article/details/80896838
通过上面讲解我依然没能理解为什么能够带符号。

以下仅是个人想:

首先2个数能够将减法变为加法,这个mo在计算时就要确保一样,在计算中二进制中,同为2个8位二进制为例子:

位数相同,确保计算时mo相同,

那么如何确保计算时符号位参与计算,并且能够正确表示当前符号的变化?

例如:
当2个正数加法时,如果在预算范围内,就正常,如果数过大符号位由于地位产生进位变成1那么就溢出,显示不正常为负数或者0。

当2个负数相加时 使用补码计算符号位不变
例如:
10001 + 10001 时 等价于 11111+11111 = 11110(补码)
就等于 10010 等于-2、

例如是11111+11111 已经超过计算范围 那么在计算范围内的2个负数相加
必然是在10xxx+11xxx之内对应的补码就在 11???+1 到10???+1之间,如果xxx是0说明这个数足够小那么对应的?就是 使用补码相加时就一定会产生进位。从未代替符号位相加而产生的进位,将符号位的进位直接舍去

当一个正数-一个负数时,
同理由于正数的符号位是0,所以其主要变化产生在复数上,其负数的补码过大,则会因为进位而产生符号位为1+1直接变0,如果补码过小说明本身负数交大,则计算过程中不会产生进位、

我感觉这是由2进制的表现方式特有的规则。

实际上当使用10进制时用补码的方式就不能像2进制各样计算了,只能说这个2进制真是天才想的点子啊

本文链接http://www.dzjqx.cn/news/show-617110.html