寻找奇偶校验的程序

问题描述 投票:0回答:1

我正在尝试计算设置为1的位数,但总总为1(如果没有则为0)我在做什么错?

typedef uint32_t uint;

uint hamm_parity(uint data)
{
    uint total = 0;
    uint i;

    for (i = 0; i < 32; i++)
    {
        if ((data & (1u << i)) == (1u << i))
            total++;
    }
    if (total % 2 == 0)
        return 0;
    else
        return 1;
}

我也尝试过:

if ((data >> i) & 1u)

也尝试将“ 1u”更改为1并更改为变量

c bit-manipulation bitwise-operators
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.