基于c语言的crc4校验和奇校验

包含无错错一位错两位的验证

crc4校验:

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

#define MAX 32767.0

void c4(int crc[],int crc4[])//校验函数

{

for (int i=0; i<40; i++) {

if(crc[i]==1)

{

for (int a=1; a<5; a++)

{

crc[i+a]=abs(crc[i+a]-crc4[a]);

}

}

}

for (int i=40; i<44; i++) {

printf("%d",crc[i]);

}

}

int main(int argc, const char * argv[]) {

// 生成校验位

int crc[44];

int crc_change[44];

int crc4[5]={1,0,0,1,1};

printf(“crc4校验:\n”);

printf(“输入的信号:”);

for(int i=0;i<40;i++)

{

crc[i]=round((double)(rand()%10)/10);

crc_change[i]=crc[i];

printf("%d",crc[i]);

}

for (int i=40;i<44;i++)

{

crc[i]=0;

}

for (int i=0; i<40; i++) {

if(crc[i]==1)

{

for (int a=1; a<5; a++)

{

crc[i+a]=abs(crc[i+a]-crc4[a]);

}

}

}

//校验位

printf(“校验位:”);

for (int i=40; i<44; i++)

{

crc_change[i]=crc[i];

printf("%d",crc[i]);

}

//

for (int i=0; i<44; i++)

{

crc[i]=crc_change[i];

}

//无错校验

printf("\n");

printf(“无错余数:”);

c4(crc,crc4);

//错一位校验

crc[0]=abs(crc[0]-1);

printf("\n");

printf(“错一位余数:”);

c4(crc,crc4);

//错两位校验

crc[43]=abs(crc[43]-1);

printf("\n");

printf(“错两位余数:”);

c4(crc,crc4);

//错随机位校验

crc[43]=abs(crc[43]-1);

crc[0]=abs(crc[0]-1);

int q=rand()%44;

crc[q]=abs(crc[q]-1);

printf("\n");

printf(“错随机位余数:”);

c4(crc,crc4);

printf("\n");

return 0;

}

奇校验:

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

#define MAX 32767.0

void c2(int crc[],int crc2[])

{

for (int i=0; i<40; i++) {

if(crc[i]==1)

{

for (int a=1; a<2; a++)

{

crc[i+a]=abs(crc[i+a]-crc2[a]);

}

}

}

for (int i=40; i<41; i++) {

printf("%d",crc[i]);

}

}

int main(int argc, const char * argv[]) {

// 生成校验位

int crc[41];

int crc_change[41];

int crc2[2]={1,0};

printf(“奇校验:\n”);

printf(“输入的信号:”);

for(int i=0;i<40;i++)

{

crc[i]=round((double)(rand()%10)/10);

crc_change[i]=crc[i];

printf("%d",crc[i]);

}

for (int i=40;i<41;i++)

{

crc[i]=0;

}

for (int i=0; i<40; i++) {

if(crc[i]==1)

{

//crc[i+4]=1;

for (int a=1; a<2; a++)

{

crc[i+a]=abs(crc[i+a]-crc2[a]);

}

}

}

//校验位

printf(“校验位:”);

for (int i=40; i<41; i++)

{

crc_change[i]=crc[i];

printf("%d",crc[i]);

}

//

for (int i=0; i<41; i++)

{

crc[i]=crc_change[i];

}

//无错校验

printf("\n");

printf(“无错余数:”);

c2(crc,crc2);

//错一位校验

crc[0]=abs(crc[0]-1);

printf("\n");

printf(“错一位余数:”);

c2(crc,crc2);

//错两位校验

crc[40]=abs(crc[40]-1);

printf("\n");

printf(“错两位余数:”);

c2(crc,crc2);

//错随机位校验

crc[40]=abs(crc[40]-1);

crc[0]=abs(crc[0]-1);

int q=rand()%40;

crc[q]=abs(crc[q]-1);

printf("\n");

printf(“错随机位余数:”);

c2(crc,crc2);

printf("\n");

return 0;

}

基于c语言的crc4校验和奇校验相关推荐

  1. C语言 实现4位奇校验的校验生成和检验

    要求使用左移操作符 1. 输入为十进制数: #include <bits/stdc++.h>using namespace std;int binaryNum; int c;int Cre ...

  2. 串口通信 / 奇校验、偶校验、0 校验和 1 校验

    --------------------------------------------- -- 时间:2019-01-28 -- 创建人:Ruo_Xiao -- 邮箱:xclsoftware@163 ...

  3. C语言 利用位运算实现奇校验

    编写函数,利用位运算符实现对一个数中除最高位以外的其他二进制数进行奇校验(奇校验就是在最高位的位置上加入一个值为1或为0的位,使该字节各个位中1的数量相加为奇数),并将校验位存放到最高位. 例如:×0 ...

  4. 基于Erlang语言的视频相似推荐系统 | 深度

    作者丨gongyouliu 来源 | 转载自大数据与人工智能(ID:ai-big-data) [导语]:作者在上一篇文章<基于内容的推荐算法>中介绍了基于内容的推荐算法的实现原理.在本篇文 ...

  5. 基于Java语言构建区块链(五)—— 地址(钱包)

    基于Java语言构建区块链(五)-- 地址(钱包) 2018年03月25日 18:02:06 wangwei_hz 阅读数:1292更多 个人分类: 区块链bitcoin比特币 文章的主要思想和内容均 ...

  6. bigru参数计算_[数据挖掘]华中科技大学 李黎 周达明:基于CNN-BiGRU模型的操作票自动化校验方法...

    原标题:[数据挖掘]华中科技大学 李黎 周达明:基于CNN-BiGRU模型的操作票自动化校验方法 智能变电站操作票校验是保障站内操作准确无误的重要环节,当前基于经验的人工校验方法主观性强,校验效率较低 ...

  7. 基于tcp的协议需要设计数据校验码吗_C#与宇电温控表自定义协议通信实例

    通信协议是做上位机开发经常会听到的一个词.无论是单片机开发常用的串口通信协议,还是上位机开发常用的TCP/IP通信协议,以及网络通信常用的Http协议,可以这么说,通信协议无处不在.[公众号dotNe ...

  8. 基于Go语言构建区块链:part5

    Golang语言和区块链理论学习完毕后,快速入门方法无疑是项目实战.本文将参考https://jeiwan.cc/tags/blockchain/教程,学习如何基于Go语言构建区块链. 1.引言 本文 ...

  9. c语言添加删除课程的思路,基于C语言实现学生选课系统

    基于C语言实现学生选课系统 发布时间:2020-09-03 11:41:13 来源:脚本之家 阅读:100 作者:xiaocaidayong 鉴于C语言实现的通讯录,为了巩固C语言的基础知识,试着写一 ...

最新文章

  1. 深度学习目标检测中计算目标的AP(average precision)平均精度、有什么用?
  2. python定义一个类和子类_Python面向对象class类属性及子类用法分析
  3. S5PV210开发 -- 开发板配置
  4. pyqt漂亮gui界面模板_一种基于模板的C代码自动生成方法
  5. php 屏蔽ctrl c,ctrl+c用不了怎么回事
  6. 《网络对抗》Exp5 MSF基础应用
  7. Node.js学习笔记8
  8. 笔记本电脑连接打印机_傻瓜操作,轻松搞定工作中各种打印难题,兄弟激光打印机开箱体验...
  9. clickhouse条件函数
  10. Linux下卸载miniconda3(Anaconda类系)
  11. Rust:String::from()、 into()、to_string()哪个效率高?
  12. Github客户端下载(安卓系统)
  13. Eclipse集成Zxing实现扫一扫功能
  14. 微信公众号采集之免费采集公众号爆文工具
  15. hihocoder 1378(有向图求最小割集)
  16. RPM命令详解(安装、升级、卸载)
  17. gmail邮件分组_如何使用Gmail和G Suite设置专业电子邮件地址
  18. 【CV】国内外优秀的计算机视觉团队汇总|最新版
  19. mesh、length、查看源代码函数、scatter、sysm、slove
  20. 华硕主板开机提示按F1怎么办?华硕主板开机提示按F1的解决方法

热门文章

  1. ​【HZNUOJ】【C系列1.4】奇迹暖暖系列1 1930​
  2. 非识不可C3D模型详解
  3. 面部识别算法是如何工作的?
  4. 千锋学习day15day16常用类
  5. 网红送餐无人车冒充AI,真人海外远程操控
  6. 商品进销存管理程序 (C语言)
  7. python解析复杂word_2019年python解析日志-word范文 (15页)
  8. 在服务器设置中smtp协议是指什么,outlook中的smtp协议具体是指什么
  9. 一个简单设置解决手机后台高耗电程序,避免卡顿,你关闭了吗?
  10. Deformable ConvNets v2 Pytorch版源码讲解_2