chaleaoch
V2EX  ›  问与答

不好意思我有一个懵逼的问题 765 - 888 = -123 是怎么算出来的?

  •  
  •   chaleaoch · Sep 13, 2020 · 1977 views
    This topic created in 2077 days ago, the information mentioned may be changed or developed.

    好吧我年龄大了记不清老师是怎么教的了. 我现在的做法是 888 - 765 = 123 然后取负数 就等于 -123 这是老师的教法吗?

    但是今天看到阮老师关于补码的介绍中的这里

    因为 00000000 (被减数)小于 0000100 (减数),所以不够减。请回忆一下小学算术,如果被减数的某一位小于减> > 数,我们怎么办?很简单,问上一位借 1 就可以了。
    
    所以,0000000 也问上一位借了 1,也就是说,被减数其实是 100000000,算式也就改写成:
    
    100000000
    -00001000
    ---------
     11111000
    

    有点没转过来, 从哪里借的, 什么时候还?

    谢谢.

    ThirdFlame
        1
    ThirdFlame  
       Sep 13, 2020
    11111000 的第一个 1 是正负标志,而不是数字。 给的这个算法 是个简便算法,所以最高位的 1 有借无还。

    补码正规做法是 正数 取反 再加 1 。 快速做法 256-正数。

    (希望没有记错)
    kerr92
        2
    kerr92  
       Sep 13, 2020
    试了下无脑计算……
    765 - 888
    = 765D + (-888D) // 减法转换成加法
    = 01011111101B + 10010001000B // 十进制转换成二进制补码,然后计算
    = 11110000101B // 补码表示的计算结果
    = 10001111011B // 原码表示的计算结果
    = -123D // 二进制原码转十进制
    oven
        3
    oven  
       Sep 13, 2020 via Android
    还是第一种方法简单直接
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2760 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 12:53 · PVG 20:53 · LAX 05:53 · JFK 08:53
    ♥ Do have faith in what you're doing.