PN码[随机生成序列 生成多项式1+x14+x15]

// 生成指定字节数的 PN 码
std::vector<uint8_t> GeneratePNCode(int nByteCount)
{
   
   
	// 初始值
	uint16_t lfsr = 0x5a5a;
	std::vector<
### CRC生成多项式 x^6 + x^4 + x^3 + 1 的实现与计算方法 对于给定的生成多项式 \(x^6 + x^4 + x^3 + 1\),首先将其转换成二进制形式。由于最高次数为6,因此对应的二进制表示应具有7位长度。根据每一项系数的位置设置相应的位: - \(x^4\) 和 \(x^3\) 分别对应第5位和第4位 - 常数项1对应最后一位 这样就得到了二进制字符串 `1011001`。 为了对消息进行CRC编,需要执行以下操作: #### 补充零位 假设原始报文为某个特定长度的二进制序列,比如 "1100101"。在应用CRC前,需在其末尾附加\(n-1\)个零,其中\(n\)是生成多项式的位宽,在此案例中为7位宽度减去最低有效位的一个位置,即补充6个零。因此,新的待处理序列为:"1100101000000"[^1]。 #### 模2除法 接下来使用模2除法规则来处理上述扩展后的序列。这里的关键在于通过异或运算而非传统的加减乘除来进行每一位上的对比消除工作。具体做法是从左至右依次取够生成多项式的长度部分同生成多项式做异或,当首位遇到'1'时才进行实际的异或操作,并将结果向低位移动继续重复这一过程直至整个输入都被遍历完毕为止[^5]。 以下是Python代示例展示了如何针对指定的消息以及生成多项式完成CRC校验值的计算: ```python def crc_remainder(input_bitstring, polynomial_bitstring, initial_filler): len_input = len(input_bitstring) initial_padding = initial_filler * (len(polynomial_bitstring) - 1) input_padded_array = list(input_bitstring + initial_padding) while '1' in input_padded_array[:len_input]: cur_shift = input_padded_array.index('1') for i in range(len(polynomial_bitstring)): input_padded_array[cur_shift + i] = str(int(polynomial_bitstring[i] != input_padded_array[cur_shift + i])) return ''.join(input_padded_array)[len_input:] message = "1100101" polynomial = "1011001" remainder = crc_remainder(message, polynomial, '0') print(f"CRC Remainder: {remainder}") ``` 这段程序实现了基于给定消息和生成多项式的CRC检验值计算功能。它接受三个参数:原信息、用于生成CRC的多项式以及用来填补额外空间的字符(通常是‘0’)。函数返回的是经过模2除法之后剩下的余数值,也就是所谓的CRC校验
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值