- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在努力学习如何 right >>
和 left <<
c++中的移位操作。我已经阅读了互联网上的一些文章和这里的一些主题,但我仍然感到困惑。我正在尝试根据用户输入编写一个 LFSR(线性反馈移位寄存器),用户应该将 长度、种子和多项式抽头位置 作为 LFSR 代码的输入。
代码是这样的:
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
string seed;
unsigned int length, pos;
cout << "Type the length and the seed" << endl;
cin >> length >> seed;
cout << "Polynomial tap positions" << endl;
cin >> pos;
//Creating array with the LFSR size
unsigned int *sizee = new unsigned int[length];
//Convert the seed from char to int
for (unsigned int i = 0; i < length; i++) {
sizee[i] = seed[i] - '0';
}
//Shifting
unsigned int seq = std::pow(2,length)-1;
for (unsigned int i = 1; i <= seq ; i++) {
//Shift Operation here
//Show user the value
}
delete[] sizee;
return 0;
}
如何向右移动位,例如,长度 = 5 的 LFSR 中的种子 00001 和 Tap 位置(Xor 位置)5 和 3 (x^5+x^3+1)?我希望获得类似这样的结果:00001 > 10000 > 01000 > 00100 > 10010,依此类推,直到循环结束,将斐波那契数列视为架构类型。
最佳答案
如果要在计算机上将 LFSR 编码为整数,首先需要了解 LFSR 和整数使用的表示形式。有两个重要的问题/差异:
当您将整数用于 LFSR 时,这会导致两件重要的事情:
因此您的基本 LFSR 步骤变为:
seed = (seed << 1) | parity(seed & polynomial)
其中 seed
是 LFSR 的内容(加上当您的整数大小大于 LFSR 长度时先前移出的额外位),多项式
是抽头位 - - 为多项式中的每个 xi 设置位 i-1 的整数,并且 parity
是一个函数计算一个整数中所有位的异或——可以在大多数 CPU 上使用标志技巧或一条指令来完成,但没有简单的方法用 C 来表达它。
关于c++ - 如何在 C++ 中为不同的多项式创建 LFSR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31615402/
我在为我的序列(模式)获取正确的 LFSR 时遇到了一些问题,当我将它实现为 LFSR 和相应的抽头时,它不会生成序列,有什么建议吗?目标 patt 为 {1, 1, 0, 0, 0, 0, 1, 0
虽然我有一个很好的 LSFR C 实现,但我想我会在 Haskell 中尝试同样的方法——只是为了看看它是如何进行的。到目前为止,我想出的比 C 实现慢两个数量级,这就引出了一个问题:如何提高性能?
如上所述,我创建了一个 LFSR 来尝试生成一些数字,但它无法正常工作。 以此开始: unsigned int lfsr = 0x000001 while(1) { lfsr >>= 1 un
我知道,如果您抽取线性反馈移位寄存器生成的系列,您会得到一个新系列和一个新多项式。例如,如果您对由多项式 x4+x+1 的 LFSR 生成的系列中的每五个元素进行采样,您将获得由 x2+x+1 生成的
我试图了解如何更改伽罗瓦 LFSR 代码,以便能够将输出位数指定为下面提到的函数的参数。我的意思是我需要返回的不是 LFSR 的最后一位作为输出位,而是 LFSR 的任何位(例如第二位或第三位)。我真
我有使用从互联网上获得的左反馈移位寄存器生成随机数的代码: #define POLY_MASK_32 0xB4BCD35C #define POLY_MASK_31 0x7A5BC2E3 #inclu
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎离题,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a minim
我想了解 galois LFSR 代码的工作原理。在维基百科页面上有一个带有示例的图。有一段 C 代码。 #include uint16_t lfsr = 0xACE1u; unsigned per
存在一个数学问题,就是生成n个唯一随机数序列的问题(随机数是N { 0, ..., n }的元素,(类似排列,但不占用内存) 最近我有点解决了这个问题,我确实得到了一些结果(阅读下面的内容,没有使用形
我正在努力学习如何 right >>和 left #include #include using namespace std; int main() { string seed;
使用线性反馈移位寄存器(LFSR)实现CRC生成有两种方法,如图所示。图中生成多项式的系数为100111,红色“+”圆圈为异或运算符。两者的初始化寄存器值都是 00000。 例如,如果输入数据比特流是
我正在为一个 OFDM 系统编程,包括发射器和接收器端。比特进入的第一个函数是扰码器,它基本上是一个 LFSR,我的多项式是 x^7 + x^4 + 1,简单地说,我对寄存器中的第 7 位和第 4 位
我最近开始为学校做一个 FPGA 项目,我之前从未使用过 VHDL,所以我尽力将我的程序拼凑在一起。总的来说,我的目标是让 prbs 或 LFSR 随机生成。我的 vhdl 代码在 xilinx IS
我在 C 中实现了 CRC32 算法,但经过数小时的查看并尝试修复它,它仍然无法正常工作。它可以编译,但校验和与几个在线 CRC 计算器中的校验和不同。我怀疑错误出在“if (0 != (charac
根据Linear feedback shift register维基百科上的页面, 除了 Galois LFSR 对计算机更友好之外,您能说出使用伽罗瓦数列相对于斐波那契数列的真正优势是什么吗? 换句
我想知道是否有一种方法可以结合两个概念:LFSR 和 Barrel Shifters 我正在寻找一种方法,在 O(1) 时间内将 LFSR 循环移动给定的移动次数。 我希望找到的是一个简单的过程,其中
我是一名优秀的程序员,十分优秀!