У меня есть массив следующим образом,
unsigned char A[16]
Я использую этот массив для представления 128-битного аппаратного регистра. Теперь я хочу реализовать регистр сдвига с линейной обратной связью (LFSR, реализация Фибоначчи), используя этот длинный регистр. Полиномы (или ответвления), которые соединяются с затвором xnor обратной связи этого LFSR, [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] должны быть сдвинуты к lsb A 1 . Какое минимальное кодирование для этого сдвига?
Спасибо!