ガロア 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);
ウィキペディアに記載されている図を理解できず、コードと関連付けることができません。トグルマスクは何をしていますか?ビットシーケンスの例とそれがシフトされたバージョンで操作がどのように機能しているかについて、誰でも説明できますか。私はフィールドを認識しておらず、コードを理解していません。私はオンラインでチェックしましたが、フィールドの用語を使わずにアルゴリズムの適切な説明を見つけることができませんでした. 親切に助けてください。