gpt4 book ai didi

bit-manipulation - x & (-x) 在 2 的补码中的意义?

转载 作者:行者123 更新时间:2023-12-04 15:18:22 24 4
gpt4 key购买 nike

其中“-”表示负x,“&”表示按位与。

程序中的数字是 8 位 2 的补码,我似乎无法找到输入和输出之间的相关性。

8  & (-8)  = 8
7 & (-7) = 1
97 & (-97) = 1

那么可能意义在于位操作?
0000 1000 & (1111 1000) = 0000 1000
0000 0111 & (1111 1001) = 0000 0001
0110 0001 & (1001 1111) = 0000 0001

在上述每种情况下,高 4 位总是以 0 结束,但我找不到输入与低 4 位最终是什么之间的相关性。

有任何想法吗?

回答: Find the lowest set bit

最佳答案

解释另一个答案,二进制补码等于一个数的补码加 1。让我们看看 8 的补码加 1 是如何进行的。

8 -> 00001000 (bin) -> 11110111 (oc) -> 11111000 (tc)

在这里,注意添加的 1 如何通过一个的补码直到它到达第一个 0,翻转那个位和它右边的位。而且,还要注意,补码中第一个 0 的位置也是原始二进制表达式中第一个 1 的位置。

x & (-x)x 中第一个 1 左边的位将是 0,因为它们仍然从取补码中翻转过来。然后,第一个 1 右边的位也将是 0,因为它们在 x 中是 0。 (否则第一个 1 会更早)。

因此, x & (-x) 的输出将是对应于 x 中第一个 1 位置的 2 的幂.

关于bit-manipulation - x & (-x) 在 2 的补码中的意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46531290/

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