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

2020-09-13 19:48:16 +08:00
 chaleaoch

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

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

因为 00000000 (被减数)小于 0000100 (减数),所以不够减。请回忆一下小学算术,如果被减数的某一位小于减> > 数,我们怎么办?很简单,问上一位借 1 就可以了。

所以,0000000 也问上一位借了 1,也就是说,被减数其实是 100000000,算式也就改写成:

100000000
-00001000
---------
 11111000

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

谢谢.

1205 次点击
所在节点    问与答
3 条回复
ThirdFlame
2020-09-13 19:54:03 +08:00
11111000 的第一个 1 是正负标志,而不是数字。 给的这个算法 是个简便算法,所以最高位的 1 有借无还。

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

(希望没有记错)
kerr92
2020-09-13 20:19:10 +08:00
试了下无脑计算……
765 - 888
= 765D + (-888D) // 减法转换成加法
= 01011111101B + 10010001000B // 十进制转换成二进制补码,然后计算
= 11110000101B // 补码表示的计算结果
= 10001111011B // 原码表示的计算结果
= -123D // 二进制原码转十进制
oven
2020-09-13 21:24:46 +08:00
还是第一种方法简单直接

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/706662

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX