gpt4 book ai didi

bit-manipulation - 保留每第 n 位并将它们折叠成最低有效位

转载 作者:行者123 更新时间:2023-12-02 01:23:30 25 4
gpt4 key购买 nike

我有一个 32 位整数,我将其视为位域。我对具有 3n 形式索引的位的值感兴趣,其中 n 的范围从 0 到 6(0 到 18 之间的每第三个位)我对具有 3n+1 或 3n+1 形式索引的位不感兴趣3n+2。

我可以轻松地使用按位与运算符来保留我感兴趣的位并将所有其他位设置为零。

我还需要将我感兴趣的位“打包”到 7 个最低有效位位置。因此,位置 0 的位保持为 0,但位置 3 的位移动到位置 1,位置 6 的位移动到位置 2,依此类推。

我想以一种高效的方式执行此操作,最好不使用循环。是否可以将操作组合应用于整数以实现此目的?

由于我们在这里只讨论整数运算,所以我认为我打算使用的编程语言并不重要。但是如果你需要知道:

我将使用 JavaScript。

最佳答案

如果位的顺序不重要,可以像这样将它们打包到位 0-6 中:

function packbits(a)
{
// mask out the bits we're not interested in:
var b = a & 299593; // 1001001001001001001 in binary
// pack into the lower 7 bits:
return (b | (b >> 8) | (b >> 13)) & 127;
}

如果初始位排序是这样的:

bit 31                         bit 0
xxxxxxxxxxxxxGxxFxxExxDxxCxxBxxA

那么打包排序是这样的:

bit 7  bit 0
0CGEBFDA

关于bit-manipulation - 保留每第 n 位并将它们折叠成最低有效位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38603283/

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