gpt4 book ai didi

c - 高效过滤位串

转载 作者:太空狗 更新时间:2023-10-29 15:08:44 24 4
gpt4 key购买 nike

<分区>

我正在寻找一个位操作函数,它采用两个位字符串并根据第二个字符串过滤和压缩第一个字符串,因此只保留第二个字符串为 1 的值。例如:

01101010 and 11110000 gives 00000110
01101010 and 00001111 gives 00001010
01101010 and 10101000 gives 00000011

通过使用循环、条件和独立处理每个位,这很容易实现,但我正在寻找一种更快的方法,如果存在的话,使用位操作技巧,而不是使用条件和循环。它不必为超过 32 位的输入工作。因此,解决方案的签名如下:uint32_t filter(uint32_t in, uint32_t mask)

在 C 中它看起来像这样带有数组和循环:

void filter(bool in[], bool mask[], bool out[], int size) {
int output_index = 0;
for (int input_index = 0; input_index < size; ++input_index) {
if (mask[input_index]) {
out[output_index++] = in[input_index];
}
}
}

这里有一些我正在寻找的解决方案类型的例子:Bit Twiddling Hacks

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