gpt4 book ai didi

math - 为什么我们需要在做 2 的补码时加 1

转载 作者:行者123 更新时间:2023-12-03 15:12:37 25 4
gpt4 key购买 nike

由 N 位表示的数的 2 的补码是 2^N 数。
例如:如果数字是 7 (0111) 并且我用 4 位表示它,那么它的 2 的补码将是 (2^N-number) 即 (2^4 -7)=9(1001)

7==> 0111
1's compliment of 7==> 1000
1000
+ 1
-------------
1001 =====> (9)

在计算一个数的 2 的补码时,我们执行以下步骤:
1.做一个数的补码
2. 在步骤 1 的结果中加 1。

我知道我们需要对数字进行补码,因为我们正在进行否定运算。但是为什么我们要加上 1?

这可能是一个愚蠢的问题,但我很难理解其中的逻辑。用上面的例子来解释(对于数字 7),我们做一个补码,得到 -7,然后加上 +1,所以 -7+1=-6,但我们仍然得到正确的答案,即 +9

最佳答案

您的错误在于“我们恭维并得到-7”。要了解为什么这是错误的,请取 7 的补码并将其加 7。如果它是 -7,你应该得到零,因为 -7 + 7 = 0。你不会。

7 的补码是 1000 .加上 7,你会得到 1111 .绝对不是零。您需要再添加一个以获得零!

数字的负数是您需要添加到它以获得零的数字。

如果您添加 1...11111 ,你得到零。因此 -1 表示为全 1 位。

如果您添加一个数字,请说 x , 其 1 的补码 ~x ,你得到所有 1 位。

因此:
~x + x = -1

两边加1:
~x + x + 1 = 0

两边减去x:
~x + 1 = -x

关于math - 为什么我们需要在做 2 的补码时加 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14833773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com