gpt4 book ai didi

c - 如何返回中间位?

转载 作者:太空宇宙 更新时间:2023-11-04 01:19:09 25 4
gpt4 key购买 nike

我在网上搜索了返回的常见解决方案x来自 start 的位似乎是:

mask = ((1 << x) - 1 ) << start

然后,mask & value .

但是,我仍然对它的工作原理感到困惑。

如果我有一个号码0101 1100我想返回位置 5 和 6 的两位 ( 11 )

mask = ((1<<2)-1) << 5

1<<2 = 0000 0100 , 减去 1 得到 0000 0011然后,移动 5 是 0110 0000

如果我取 0110 0000 & 0101 1100 (原来的),我得到0100 0000

这不是我想要的答案,那么我做错了什么?

最佳答案

假设我们指的是二进制补码,那么 11 将是位 2 和 3(或 3 和 4,具体取决于您问的是谁)。

这样想。如果你想从一个二进制值的中间得到特定数量的位,那么你可以先将它向右移动n次,其中n是二进制数的索引第一点兴趣。

0101 1100 向右移动两次产生 0001 0111

在这里,我们对前两位感兴趣,所以我们可以简单地调用 0001 0111 & 3 因为 3 = 00000011

因此,此特定示例的公式为 (b >> 2) & 3,其中 b 是二进制值。

如果您想要当前位置的值,您可以调用 0101 1100 & 12 因为 12 = 00001100,它返回 0000 1100 .

关于c - 如何返回中间位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48478644/

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