【发布时间】:2022-01-06 09:48:01
【问题描述】:
我了解各个操作是什么(例如按位 AND 和 OR),但我不明白为什么它们一直在使用。
另外,我的理解是第一组掩码用于计算奇偶校验位。但我不明白为什么选择了第二套口罩,也不明白它们的目的是什么。谁能帮我解决这个问题?
rawData 是要被 hamming.c 函数编码的输入词。
【问题讨论】:
-
什么是
HC_WORD?0b...和__builtin_popcount是非标准的。你用的是什么编译器? -
Px_m常量看起来不对劲。请提供使用上下文或有关它们的更多信息。 -
我正在使用 GCC。 Popcount 是一个 GCC 函数,用于计算二进制 int 中的个数。
-
不仅代码很糟糕,因为它很复杂并且有零个 cmets,甚至 if
register关键字也可以做任何事情,它被应用了五个六次到常数,每个使用一次。我希望这段代码不是来自试图教 C 的人... -
@AndrewHenle 从“通用编码”的角度来看,我同意。但是,对于了解主题(汉明码)的人来说,功能是相当清楚的。该功能的应用很可能是在性能至关重要且性能明显优先于可移植性的环境中。我同意将
P0_m、P1_m等放入registers 似乎很奇怪。即使__builtin_popcount()是一个宏,似乎也不太可能获得任何东西。我想最好将P0、P1,等放在寄存器中。
标签: c encoding bit-manipulation bitmask