基于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. 独家 | 一文了解强化学习的商业应用2
  2. Exchanger的使用
  3. Runtime's DiskExplorer手工填写分区表
  4. 云栖社区云栖号(团队博客)攻略【2018版】
  5. Soloπ:支付宝开源的Android专项测试工具
  6. java long.max_value,Long + Long不大于Long.MAX_VALUE
  7. Asp.net ajax、Anthem.net、Ajax pro三大ajax框架那一种使用比较方便?易于配置?
  8. Web Hacking 101 翻译完成
  9. 【FPN车辆目标检测】数据集获取以及Windows7+TensorFlow+Faster-RCNN+FPN代码环境配置和运行过程实测
  10. pytest测试框架_带你深入理解自动化测试框架Pytest的配置文件!
  11. Android界面绘制流程--------How Android Draws Views
  12. python2和python3中的map()
  13. Linux 环境下maven安装配置
  14. java smtp服务器,用Java实现SMTP服务器
  15. Mac 给新人的入手指南
  16. Javascrpt测试
  17. array_column()函数用法
  18. 图片怎样调整分辨率?如何在线修改分辨率?
  19. 网络技巧|远程桌面连接不上的多种解决方案!
  20. 听好程序员一句劝!零基础这样学Java才是正确的方式!

热门文章

  1. HttpClient 实例(1)
  2. 行为检测代码(一):超详细介绍C3D架构训练+测试步骤
  3. 【cmd】 如何通过cmd打开 jupyter,在jupyter中如何打开文件夹
  4. 影视解说怎么做?超详细教程分享给大家
  5. 微信公众号人脸识别|活体检测SDK|人证比对API
  6. Leetcode 289:生命游戏(最详细的解法!!!)
  7. 慢查询如何优化?(实战慢查询)
  8. zabbix安装监控客户端应用
  9. 通讯录备份的方法你知道几个?分享iPhone通讯录3个备份技巧!
  10. 使用Python+xpath爬取知网所有中英文期刊的封面背景图片