小编Eri*_*rik的帖子

在32位字位模式中找到"边"

我试图找到最有效的算法来计算位模式中的"边缘".边缘意味着从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;
    }
}
Run Code Online (Sandbox Code Playgroud)

它需要至少2或3倍的速度.

c c++ bit-manipulation

2
推荐指数
1
解决办法
256
查看次数

标签 统计

bit-manipulation ×1

c ×1

c++ ×1