次のような配列があります。
unsigned char A[16]
この配列を使用して、128 ビットのハードウェア レジスタを表しています。この長いレジスタを使用して、線形フィードバック シフト レジスタ (LFSR、フィボナッチ実装) を実装したいと考えています。この LFSR のフィードバック xnor ゲートに接続する多項式 (またはタップ) は [128, 29, 27, 2, 1] です。
16 ビット LFSR ([16, 14, 13, 11] をタップ) の実装は、Wikipediaから次のように取得できます。
unsigned short lfsr = 0xACE1u;
unsigned bit;
unsigned rand()
{
bit = ((lfsr >> 0) ^ (lfsr >> 2) ^ (lfsr >> 3) ^ (lfsr >> 5) ) & 1;
return lfsr = (lfsr >> 1) | (bit << 15);
}
ただし、私の場合、あるバイト要素から別のバイト要素にビットをシフトする必要があります。たとえば、msb または A[0] を A 1の lsb にシフトする必要があります。このシフトを行うための最小限のコーディングは何ですか? ありがとうございました!