这个二进制的减法减法怎么做啊?

减法运算其实是可以由加法运算替代的我们上面已经介绍过了无符号和补码的非,其实很多CPU是没有减法运算器的它们都是将减数进行逆运算以后送入加法器,然后进荇加法运算这样得出来的结果就是减法运算最终的结果。

比如我们考虑一种简单的情况当w = 4时的无符号减法运算,对于 5 - 4这个减法运算来說我们可以由 5 + 4-1(其中4-1是4的逆元的意思,不是1/4的意思)来替代这个减法运算

为了更加直观,LZ带各位来算一下首先4的逆元根据上面的公式可以得到为 4-1 = 24 - 4 = 12 。那么我们现在需要对5和12进行加法运算它们的位表示分别为 0101和1100,结果为10001也就是十进制17的位表示。不过由于我们的w = 4因此截断之后结果为0001,也就是十进制的1最终可以得到 5 - 4 = 1。

对于5 - 4来说是考虑的结果为正的情况。或许有的猿友会对结果为负或者说是无符号数溢出的情况下有疑问因此LZ这里对这种情况也做一个简单的介绍。我们考虑一个简单的计算 0 - 1我们可以得到1-1 = 24 - 1 = 15。此时对0和15进行加法运算他們的位表示分别为0000和1111,结果为1111

看到这里估计有的猿友会奇怪了,这怎么回事0 - 1 = 15?

当然不是这个结果其实是正确的。考虑使用补码编码來解析1111这个位表示它代表的值就是-1。15是1111这个位表示在无符号编码情况下的解析结果

因此LZ这里也给出一个公式,就是对于两个整数x和y来說x - y = x + y-1。这里需要特别说明的是这个公式代表的意义是位表示,而不是实际的数值

}
  • 0-1=1,机器中要置借位标志位为1表示借位.计算机系统的不同借位标志位也可能被清0,那么初始状态(复位状态)为1.
     
}

我要回帖

更多关于 二进制的减法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信