1

我正在玩 2 的补码,并找到了一种更快的方法来找到负二进制的值。请帮助我证明这一点(对或错)或它为什么有效!提前致谢!

2的补码对于查找二进制的值非常有用,但是我想到了一种更简洁的方法来解决这样的问题(从未见过其他人发布过它):

以二进制为例: 1101 [假设空格“1”是符号]等于-3

使用 2 的补码我们会这样做...将 1101 翻转到 0010...添加 0001 + 0010 ===> 给我们 0011. 0011 正二进制 = 3。因此 1101 = -3

我意识到:

而不是所有的翻转和添加,你可以只做解决正二进制的基本方法(比如说 0101)是 (2 3 * 0) + (2 2 * 1) + (2 1 * 0) + (2 0 * 1) = 5。

用否定做完全相同的概念!(稍微扭曲)

以 1101 为例:

对于第一个数字而不是 2 3 * 1 = 8,请执行 -(2 3 * 1) = -8

然后像往常一样继续,做-8 + (2 2 * 1) + (2 1 * 0) + (2 0 * 1) = -3

注意:这似乎适用于我所做的每一个测试。

感谢您的关注。另外,如果你以前没见过这个,请告诉我,我从来没有在任何地方见过这个。

4

1 回答 1

1

该解决方案似乎适用于我所做的测试!感谢您快速解决2的补码,我仍然会测试一些更困难的问题。

于 2013-07-07T22:14:18.843 回答