12、P1 W2 U2.3 负数 与 减法

作者: shazizm | 来源:发表于2019-07-29 19:19 被阅读0次

    视频:
    如果本次课程对应的 Coursera 的视频打不开,可以点击下面链接
    P1W2U2.3 - Negative Numbers

    上节讲解了 二进制的计算 和 加法器,但我们只提到了正数。遗留了两个问题
    一个是负数问题
    一个是溢出问题

    这节就来看看 计算机世界里的 负数 如何巧妙的一次解决两个问题。

    很自然如下图,会想到一种保留最左边的一位数,用来代表+和-。


    不采用

    很快发现这个设计有很多问题:
    1.比如会出现 0 和 -0 的情况。
    2.进行计算的时候还需要额外处理正负问题。

    所以这个方案看起来并不是最优雅的设计。


    不采用

    替代设计 是一种叫 2's complement (补码)的方法。

    补码:
    在计算机系统中,数值一律用补码来表示和存储。
    原因在于,使用补码,可以将符号位和数值域统一处理;
    同时,加法和减法也可以统一处理。
    此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

    如下图 0 到 7。八个数都是和原来一样,对应各自二进制数。
    负数 -x ,用 2^n-x 结果的二进制 来对应表示。(n是二进制位数,下图就是4)

    比如 -1 就是 16-1 = 15 => 1111。那么 -1 对应的就是 1111
    比如 -8 就是 16-8 = 8 => 1000。那么-8 对应的就是 1000

    这样我们就避免了 -0 和 0 的重复问题。正负现在各有二进制可以代表了。
    但是负数这么魔性的对应,又该如何进行加法计算呢。


    我感觉因为有了这种正负数的划分,和负数的对应法。才有了只用加操作就能完成 加减法。而且还同时解决了溢出问题。

    如下图,两个负数相加(-2) + (-3)。
    -2 对应 1110
    -3 对应 1101

    1110 + 1101 = 11011 = 最左侧溢出一位抛弃 = 1011

    什么? 对应 1011
    -5!
    而 -5 神奇地 就是 (-2) + (-3) 的结果。

    这是什么神仙魔法。。。

    不服气,我要试一个正数一个负数相加 2 + (-3)。
    2 对应 0010
    -3 对应 1101

    0010 + 1101 = 1111 = 没溢出 = 1111

    什么?对应 1111
    -1!
    服了

    大概 视频 5分50 的解释了为什么这么神奇。
    提到了模(modulo)。
    谁能说明白,就文章下方留言吧,方便大家学习了。


    “模” 的概念可以帮助理解 补数 和 补码 。

    最后我们就剩一个问题需要解决了

    上一个“不服”试验,假如 2-3 那么就要 先转换成 加法 2 + (-3),这里实际上我们需要先做一个转换 把 3 转成 -3。再用已知的加法操作。

    那么如何把 3 转成 -3呢,或任意数 x 转换成 -x 呢。

    分5步推理:

    1. 负数?公式: 2^n -x
    2. 数学小技巧:2^n -x = 1 + (2^n -1)-x
    3. 而 2^n -1 ,假设n为8,2^n = 256,256-1=255 ,255 对应 11111111
    4. 而 (2^n -1)- x 就是用 11111111 减 x,从下图右下角来看就是对 x 取反。
    1. 所以 x 转成 -x 的方法就是:x对应的二进制"取反"再加1。
    二进制数 取反 就是每位 都做 not 运算。

    再来做一个 4 转 -4 的变换

    4 对应 0100
    0100 取反 1011
    1011 加一 1100
    1100 对应 -4

    真香

    这节到此说了一个事,只要采用文章一开始的 正负数对应方法。了解 正数 转 负数的方法。我们就和上一章一样,可以不管正负,不担心溢出错误。还是 两个数 相加操作。轻松拓展了 负数 和 减法 的设计。

    神奇:负数的这种表示方式,又正好能得出正确的加法结果。这是一个巧合吗?还是其中有着数学原理?

    下节课,我们可以进入 ALU(算数逻辑单元) 的讲解了。

    相关文章

      网友评论

        本文标题:12、P1 W2 U2.3 负数 与 减法

        本文链接:https://www.haomeiwen.com/subject/idmbrctx.html