我正在尝试计算设置为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并更改为变量