我正在尝试理解伽罗瓦LFSR代码的工作原理。在维基百科页面上有一个带有示例的图形。其中有一段C片段代码。
#include <stdint.h>
uint16_t lfsr = 0xACE1u;
unsigned period = 0;
do {
unsigned lsb = lfsr & 1; /* Get lsb (i.e., the output bit). */
lfsr >>= 1; /* Shift register */
if (lsb == 1) /* Only apply toggle mask if output bit is 1. */
lfsr ^= 0xB400u; /* Apply toggle mask, value has 1 at bits corresponding
* to taps, 0 elsewhere. */
++period;
} while(lfsr != 0xACE1u);
我无法理解维基百科上给出的图形并将其与代码相关联。开关掩码是做什么的?有人能够解释一下操作如何使用示例位序列及其移位版本进行工作吗?我不了解字段,也不理解代码。我在网上查找了一些信息,但没有找到任何不涉及字段术语的算法的好的解释。请帮帮忙。