gpt4 book ai didi

c - 提取特定范围的位并在 C 中找到它们之间的零数

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

我想提取整数变量中特定范围的位。

例如:0xA5 (10100101)

我想从bit2提取到bit5。即 1001 到一个变量并计算它们之间的零数。

我有另一个给出起点的变量,这意味着在这种情况下变量的值为 2。因此可以通过 0xA5 >> 2 找到起点。第 5 位位置在这里是一个随机位置..意味着它可以是 6 或 7。主要思想是在第 2 位之后将哪个位设置为 1。我必须提取它..

我该如何完成剩下的部分?

最佳答案

假设您正在为您的变量处理 unsigned int。您将必须构建适当的掩码。

假设你想要从位置x到位置y的位,需要有y - x + 1 1s 在掩码中。

你可以通过-

int digits = y - x + 1;
unsigned int mask = 1u << digits - 1;

现在您需要从初始数字中删除较低的 x 位,这由 -

完成
unsigned int result = number >> x;

最后应用掩码去除高位 -

result = result & mask;

关于c - 提取特定范围的位并在 C 中找到它们之间的零数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48659216/

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