【发布时间】:2014-01-24 14:56:02
【问题描述】:
我想知道当减去的数字小于另一个数字时,我如何实现二进制算法的 2-complements 方法。例如 - 如果我想从 12 中减去 13 ...即 12 -13 = -1。
我尝试了以下步骤:
1) 12 到二进制使用 8 位 (0000 1100)
2) -13 到二进制使用 2 补码:
a) 使用 8 位将 13 转换为二进制:0000 1101
b) 反转:1111 0010
c) 加 1:1111 0010 + 1 = 1111 0011
所以如果我计算正确,结果 (1111 0011) 表示 -13。所以让我们用 12 来添加这个负表示:
00001100 + 11110011 = 11111111
所以我不明白结果 - 只有一个:s (1111...)
当结果为负时会发生这种情况。显然我错过了一些东西。
感谢帮助!!!!
【问题讨论】:
-
欢迎来到 Stack Overflow!看起来您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只有在发布者已经尝试自己解决问题时才会提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出和您实际获得的输出(控制台输出、堆栈跟踪、编译器错误 - 不管是什么适用的)。您提供的详细信息越多,您可能收到的答案就越多。
-
@kkuilla 他甚至没有要求代码只是一个解释
-
OP,在我看来
11111111是正确答案-1 -
@OGHaza 是的,但前提是他将值解释为已签名。否则为 255。
-
@OnoSendai 但是他已经在计算的早期将 -13 解释为已签名,但是是的,你是对的,这一定是误解所在。
标签: binary