我正在尝试计算设置为 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 和变量
最佳答案
好吧,我发现了我的错误,我以更简单的方式在这里编写了代码,这样您就不需要上下文,但通过这样做,我隐藏了我的错误。
我没有在循环中使用 32,而是使用了一个常量,但我使用了错误的常量。 我傻了...
无论如何,感谢您的帮助!
关于c - 寻找奇偶校验的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60314053/