V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
chaleaoch
V2EX  ›  问与答

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

  •  
  •   chaleaoch · 2020-09-13 19:48:16 +08:00 · 1201 次点击
    这是一个创建于 1561 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    谢谢.

    ThirdFlame
        1
    ThirdFlame  
       2020-09-13 19:54:03 +08:00
    11111000 的第一个 1 是正负标志,而不是数字。 给的这个算法 是个简便算法,所以最高位的 1 有借无还。

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

    (希望没有记错)
    kerr92
        2
    kerr92  
       2020-09-13 20:19:10 +08:00
    试了下无脑计算……
    765 - 888
    = 765D + (-888D) // 减法转换成加法
    = 01011111101B + 10010001000B // 十进制转换成二进制补码,然后计算
    = 11110000101B // 补码表示的计算结果
    = 10001111011B // 原码表示的计算结果
    = -123D // 二进制原码转十进制
    oven
        3
    oven  
       2020-09-13 21:24:46 +08:00 via Android
    还是第一种方法简单直接
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2756 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:52 · PVG 22:52 · LAX 06:52 · JFK 09:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.