二进制减法运算

如果采用与十进制减法相同的方法,那么从一个较大的二进制数中减去一个较小的无符号二进制数就很容易了。示例如下:

    01101    (十进制数 13)
-   00111    (十进制数 7)
----------

位 0 上的减法非常简单:

     01101
-    00111
----------
            0

下一个位置上执行(0-1),要向左边的相邻位借1,其结果是从 2 中减去 1:

     01001
-    00111
----------
          10

再下一位上,又要向左边的相邻位借一位,并从 2 中减去 1:

     00011
-    00111
----------
        110

最后,最高两位都执行的是零减去零:

     00011
-    00111
----------
     00110            (十进制数 6)

执行二进制减法还有更简单的方法,即将被减去数的符号位取反,然后将两数相加。这个方法要求用一个额外的位来保存数的符号。

现在以刚才计算的(01101-00111)为例来试一下这个方法。首先,将 00111 按位取反 11000 加 1,得到 11001。然后,把两个二进制数值相加,并忽略最高位的进位:

01101    (+13)
11001    (-7)
-------
00110    (+6)

结果正是我们预期的 +6。

爱面试的程序媛,一个分享面试经验的公众号。跟着站长一起学习,每天都有进步。

通俗易懂,深入浅出,定时分享程序员面试的那点事。

面试如何造火箭?工作如何拧螺丝?都在这个公号哦。

扫描二维码关注公众号,免费领取价值 1000 元的求职面试资料(限时免费)!

当你决定关注「爱面试的程序媛」,你已然超越了90%的程序员!

爱面试的程序媛二维码
微信扫描二维码关注