好吧我年龄大了记不清老师是怎么教的了. 我现在的做法是 888 - 765 = 123 然后取负数 就等于 -123 这是老师的教法吗?
但是今天看到阮老师关于补码的介绍中的这里
因为 00000000 (被减数)小于 0000100 (减数),所以不够减。请回忆一下小学算术,如果被减数的某一位小于减> > 数,我们怎么办?很简单,问上一位借 1 就可以了。
所以,0000000 也问上一位借了 1,也就是说,被减数其实是 100000000,算式也就改写成:
100000000
-00001000
---------
11111000
有点没转过来, 从哪里借的, 什么时候还?
谢谢.
1
ThirdFlame 2020-09-13 19:54:03 +08:00
11111000 的第一个 1 是正负标志,而不是数字。 给的这个算法 是个简便算法,所以最高位的 1 有借无还。
补码正规做法是 正数 取反 再加 1 。 快速做法 256-正数。 (希望没有记错) |
2
kerr92 2020-09-13 20:19:10 +08:00
试了下无脑计算……
765 - 888 = 765D + (-888D) // 减法转换成加法 = 01011111101B + 10010001000B // 十进制转换成二进制补码,然后计算 = 11110000101B // 补码表示的计算结果 = 10001111011B // 原码表示的计算结果 = -123D // 二进制原码转十进制 |
3
oven 2020-09-13 21:24:46 +08:00 via Android
还是第一种方法简单直接
|