gpt4 book ai didi

c - Galois LFSR - 如何指定输出位数

转载 作者:行者123 更新时间:2023-11-30 15:18:58 24 4
gpt4 key购买 nike

我试图了解如何更改伽罗瓦 LFSR 代码,以便能够将输出位数指定为下面提到的函数的参数。我的意思是我需要返回的不是 LFSR 的最后一位作为输出位,而是 LFSR 的任何位(例如第二位或第三位)。我真的很困惑这个问题。有人能给出一些如何实现的提示吗?

#include < stdint.h >
uint16_t lfsr = 0xACE1u;
unsigned period = 0;
do {
unsigned lsb = lfsr & 1;
/* Get lsb (i.e., the output bit - here we take the last bit but i need to take any bit the number of which is specified as an input parameter). */
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);

最佳答案

如果您需要位k (k = 0 ..15),您可以执行以下操作:

return (lfsr >> k) & 1;

这会将寄存器k位位置向右移动并屏蔽最低有效位。

关于c - Galois LFSR - 如何指定输出位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30983389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com