我有一个数组如下,
unsigned char A[16]
我使用这个数组来表示一个 128 位硬件寄存器。现在我想使用这个长寄存器来实现一个线性反馈移位寄存器(LFSR,斐波那契实现)。连接到这个 LFSR 的反馈 xnor 门的多项式(或抽头)是 [128, 29, 27, 2, 1]。
可以从Wikipedia获得 16 位 LFSR(在 [16, 14, 13, 11] 处的抽头)的实现,如下所示。
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 。进行这种转变的最低编码是多少?谢谢!