gpt4 book ai didi

c++ - 在 32 位字位模式中找到 "edges"

转载 作者:太空狗 更新时间:2023-10-29 23:23:45 26 4
gpt4 key购买 nike

我试图找到最有效的算法来计算位模式中的“边缘”。边缘意味着从 0 到 1 或 1 到 0 的变化。我每 250 us 对每个位进行一次采样,并将其转移到一个 32 位无符号变量中。

到目前为止这是我的算法

void CountEdges(void)
{
uint_least32_t feedback_samples_copy = feedback_samples;
signal_edges = 0;

while (feedback_samples_copy > 0)
{
uint_least8_t flank_information = (feedback_samples_copy & 0x03);

if (flank_information == 0x01 || flank_information == 0x02)
{
signal_edges++;
}

feedback_samples_copy >>= 1;
}
}

它至少需要快 2 到 3 倍。

最佳答案

您应该能够将它们按位异或在一起以获得表示翻转位的位模式。然后使用此页面上的位计数技巧之一:http://graphics.stanford.edu/~seander/bithacks.html计算结果中有多少个 1。

关于c++ - 在 32 位字位模式中找到 "edges",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1630803/

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