c++实现FLSR,寄存器位数为10,反馈函数,初始值都自己定
时间: 2023-06-24 07:04:39 浏览: 205
FLSR是一个反馈线性移位寄存器,它可以用于生成伪随机序列。在C++中,我们可以用位运算来实现。
以下是一个简单的FLSR实现:
```c++
#include <iostream>
using namespace std;
int main() {
const int N = 10; // 寄存器位数
const int feedback = 0b1001011000; // 反馈函数
int reg = 0b1111111111; // 初始值
for (int i = 0; i < 20; i++) { // 生成20个序列
cout << ((reg >> (N - 1)) & 1); // 输出寄存器最高位
int fb = 0;
for (int j = 0; j < N; j++) { // 计算反馈
fb ^= ((reg >> j) & 1) * ((feedback >> j) & 1);
}
reg = (reg >> 1) | (fb << (N - 1)); // 移位并加入反馈
}
return 0;
}
```
在这个实现中,我们使用了C++中的二进制字面量和位运算符。feedback变量表示反馈函数,它是一个10位的二进制数。reg变量表示当前的寄存器值,它是一个10位的二进制数。在每个循环中,我们先输出寄存器的最高位,然后计算反馈,并将反馈加入寄存器中。最后,我们将寄存器右移一位,并将反馈放在最高位上。这样就生成了一个伪随机序列。
需要注意的是,这个实现并不是最优的,如果需要高效的实现,可以使用位运算的技巧来加速计算。
阅读全文