XTU1200:ProblemCRC

本文详细介绍了循环冗余校验(CRC)的原理,并提供了一个模拟处理CRC码的程序实例。通过分段数据、模2除法等步骤,实现了CRC码的生成过程。
题目描述

现实中的网络通讯不够理想,经常会有bit从0变1,从1变0...为了检验是否出错 需要用到循环冗余校验CRC 
CRC冗余检验码包含两个部分 k位信息位+n位校验位,可由以下的步骤得到:

1.将要传送的数据分段,每段k个bit,如果不足k位用0补齐
2.对于每个长度为k的01序列M, 先在M后面加n个0得到新的M'.
3.选定一个(n+1)位的01序列做为除数P,对M'做**模2的除法,得到一个n位的余数R(即校验位).
4.将R接到M的后面就得到了M的 CRC冗余检验码 

请写一个程序模拟处理出CRC码的过程.
**注意此处模2的除法是不进位的除法,除数和被除数做异或运算。进行异或运算时除数和被除数最高位对齐,按位异或。如图所示

crc.jpg

输入

多组样例输入,每个样例有3行. 第一行三个整数m,n,k.(m>0&&m<=200 n>0&&n<=100 m>=n k>0&&k<=100) 
m要传送的比特串的长度 , n除数P的位数(实际的校验位长为n-1) , k 每个码元有 k 个比特 
第二行 一个m位的字符串 即要传送的序列 
第三行 一个n位的字符串 即除数P

输出

每行输出一段码元处理后的CRC码.见样例.

样例输入
15 4 6     
101001101001101
1101
样例输出
Case: 1#
101001001
101001001
101000100

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int N = 3000;
int a[N], c[N], p[N];
char s[N];
int main()
{
    int cas = 0;
    int n, m, k, K;
    while(~scanf("%d%d%d", &m, &n, &K))
    {
        scanf("%s", s);
        for(int i = 0; s[i]; i++)
        {
            a[i] = s[i] - '0';
        }
        scanf("%s", s);
        for(int i = 0; s[i]; i++)
        {
            p[i] = s[i] - '0';
        }

        printf("Case: %d#\n", ++cas);
        for(int t = K - m % K; t > 0 && m % K; t--)
        {
            a[m++] = 0;
        }
        for(int i = 0; i < m; i += K)
        {
            for(int j = 0; j < K; j ++)
            {
                c[j] = a[i+j];
            }
            for(int j = K; j < K + n - 1; j ++)
            {
                c[j] = 0;
            }
            for(int j = 0; j < K; j ++)
            {
                if(c[j] == 0) continue;
                for(int k = 0; k < n; k ++)
                {
                    c[j+k] ^= p[k];
                }
            }
            for(int j = 0; j < K; j ++)
            {
                printf("%d", a[i+j]);
            }
            for(int j = K; j < K+n-1; j++)
            {
                printf("%d", c[j]);
            }
            puts("");
        }
    }
    return 0;
}


源码下载地址: https://pan.quark.cn/s/a4b39357ea24 "ZV-1 高级功能使用手册 用户详细指南" 此文档将全面阐述 Sony ZV-1 相机的进阶功能及其操作方法,为用户呈现详尽的操作指引和配置范例。 一、使用指南与摄影技巧 * 本手册旨在协助用户迅速掌握 Sony ZV-1 相机的使用方法 * 提供摄影技巧与操作方法等实用信息 * 可在线查阅配件兼容性详情及配置范例 二、基础操作 * 通过控制轮和菜单选项将常用功能分配至按键 * 探索功能按钮(Fn)与自定义按键的应用 * 学习显示(DISP)按钮的操作方法 * 明确拍摄及浏览时图标与提示的展示方式 三、电源与存储介质 * 查询电池续航时间及可拍摄照片数量 * 注意电池使用规范及更换事项 * 掌握存储卡插入方法及注意事项 四、语言与时间设定 * 说明语言及时间配置流程 * 熟悉相机内部功能说明和拍摄模式选择 五、拍摄模式与对焦系统 * 探究拍摄模式和对焦模式的选择 * 了解自动对焦、人脸/眼部自动对焦设置及主体追踪功能 * 掌握手动对焦和直接手动对焦(DMF)操作 * 理解峰值对焦设置及拍摄模式选择 六、触控操作与视频录制 * 阐明触控功能特性及触控快门使用 * 学习触控对焦与触控追踪功能 * 掌握视频录制模式及高帧速率(HFR)设置 * 了解智能自动与场景识别程序 七、曝光调整与白平衡 * 熟悉曝光模式和白平衡配置 * 探究ISO感光度调节与变焦功能 * 学习自动HDR及动态范围优化(DRO)技术 八、图像处理与编辑功能 * 明确图像质量与文件格式选项 * 了解美肤效果与自动构图功能 * 掌握色彩空间选择与快门速度设置 * 探索降噪处理及高ISO降噪技术 九、闪光灯与人脸识...
内容概要:本文围绕“重磅粉丝福利专栏1.8配电网分布式能源的选址与定容系列”展开,系统涵盖了电力系统与智能优化领域的多项前沿科研主题,重点聚焦于配电网中分布式能源的规划与优化问题。内容涉及三相PWM换流器建模、微电网控制、电动汽车有序充电、风光储协同调度、源网荷储一体化优化、双层优化与ADMM分布式算法等核心技术,并结合Matlab/Simulink仿真工具实现多种复杂场景的建模与求解。文档列举了大量具体研究案例,如基于粒子群算法的参数辨识、多目标路径规划、需求响应下的供电能力评估等,突出其在科研复现、算法创新与工程应用中的实用价值。整体资源体系庞大,强调“借力科研”,倡导通过成熟工具与方法提升研究效率与创新能力。; 适合人群:具备一定电力系统、自动化或相关工程背景,熟悉Matlab/Simulink环境,从事科研工作1-3年的研究生、科研人员或工程师。; 使用场景及目标:①用于复现高水平论文(如硕士、博士论文及EI期刊)中的算法与仿真模型;②支持科研项目中关于分布式能源规划、微电网优化、智能调度与控制策略的设计与验证;③辅助完成课程设计、毕业设计或科研竞赛中的仿真建模任务。; 阅读建议:建议读者按照文档提供的目录结构系统性浏览,优先关注与自身研究方向匹配的模块,结合提供的代码资源与仿真模型进行实践操作,注重理论分析与仿真实现的结合,以提升科研效率与创新能力。
内容概要:本文针对不对称电网故障下T型三电平逆变器的低电压穿越(LVRT)问题,提出了一种多目标协同控制策略。该策略深度融合正负序分离技术、电网电压前馈控制与先进的DPWMA调制方法,构建了完整的控制系统架构,旨在实现故障期间负序电流的有效抑制、并网功率的平稳输出以及动态响应速度的显著提升。研究通过Simulink平台建立了详细的T型三电平逆变器仿真模型,对所提控制策略在稳态运行、电网电压不平衡跌落及动态切换等多种工况下的性能进行了全面验证。仿真结果表明,该方案能有效改善并网电流质量,减小功率波动,增强系统在恶劣电网条件下的运行稳定性与鲁棒性,为高比例新能源接入背景下提升电力电子设备的故障穿越能力提供了有效的技术路径。; 适合人群:具备电力电子与电力系统基础知识,从事新能源并网、逆变器控制或微电网技术研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究T型三电平逆变器在不对称电网故障下的动态行为与控制难点;②掌握正负序分离、DPWMA调制、电网前馈等关键技术的设计与实现方法;③为高比例新能源接入背景下提升并网设备低电压穿越能力提供理论支持与仿真验证手段; 阅读建议:建议结合Simulink仿真模型同步学习,重点关注控制策略的结构设计与各模块间的协同机制,深入理解正负序解耦控制与前馈补偿对系统性能的提升作用,并可通过调整故障条件进行对比实验以加深理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值