#include "stdio.h"
#include "conio.h"
int cnt_bit(int num) /* 计算二进制位数 */
{
if(num<0) return 16;
else
{
int i;
for(i=14;i>=0;i--)
if(num>=1<<i)
return (i+1);
}
}
int CRC_4(int msgcode) /* CRC编码,生成包含信息码部分和冗余部分的CRC冗余码 */
{
int msg_len=0; /* 信息码长度 */
int gencode=(1<<4)+(1<<1)+1; /* G(x)=x4+x+1 */
int gen_len=4; /* 产生码长度 */
int n=0; /* 信息码长度与产生码长度之和 */
int trancode=0; /* CRC最终冗余码 */
msg_len=cnt_bit(msgcode);
n=msg_len+gen_len;
if(n>16) return -1; /* 信息码长度与产生码长度之和大于16位,则产生溢出信号 */
else
{
int msgtemp=msgcode<<gen_len;
int result=msgtemp;
int gentemp=gencode<<(msg_len-1);
int i=msg_len;
while(i>0) /* 用异或实现模2除法 */
{
if(cnt_bit(result)==n)
result=result^gentemp;
result=result<<1;
i--;
}
if(cnt_bit(result)==n) /* 将余数最高位保留在最终冗余码中 */
trancode=msgtemp+(1<<(gen_len-1));
else
trancode=msgtemp;
result=result&((1<<(n-1))-1); /* 去掉余数最高位 */
result=result>>msg_len; /* 余数右移 */
trancode=trancode+result;
}
return trancode;
}
int CRC_4Test(int msgcode) /* CRC检验,如果接收到的信息码可以被产生码整除则返回1,否则返回0 */
{
int msg_len=0;
int gencode=(1<<4)+(1<<1)+1;
int gen_len=4;
int n=0;
int trancode=0;
int flag=1 ;
msg_len=cnt_bit(msgcode);
n=msg_len;
if(n>16) return -1;
else
{
int msgtemp=msgcode;
int result=msgtemp;
int gentemp=gencode<<(msg_len-gen_len-1);
int i=(msg_len-gen_len);
while(i>0)
{
if(cnt_bit(result)==n)
result=result^gentemp;
result=result<<1;
i--;
}
if(cnt_bit(result)==n)
trancode=(1<<(gen_len-1));
else
trancode=0;
result=result&((1<<(n-1))-1);
result=result>>(msg_len-gen_len);
trancode=trancode+result;
}
if(trancode!=0) flag=0;
return flag;
}
main()
{
int a=CRC_4(89);
int b=CRC_4Test(a);
printf("\n%d",b);
getch();
}
CRC-Code.rar_16位CRC_CRC 16 c code
版权申诉
55 浏览量
2022-09-24
18:33:56
上传
评论
收藏 921B RAR 举报
JonSco
- 粉丝: 69
- 资源: 1万+
最新资源
- 服务器概述服务器概述服务器概述服务器概述.txt
- 华中农业大学python实验题.txt
- 海康威视相机采图交叉编译示例程序,c++
- DETR-基于Tensorflow实现DETR目标检测算法-附流程教程+项目源码-优质项目实战.zip
- 3d激光slam地图发布程序,3d地图点云处理,c++程序
- 送给妈妈的一束鲜花.zip(母亲节祝福HTML源码)
- 稀疏化DETR-基于Pytorch实现稀疏化DETR-SparseDETR-附流程教程+项目源码-优质项目实战.zip
- 人工分类:SLTM的微博评论二分类数据集
- (自适应手机端)响应式房产合同知识产权网站pbootcms模板 企业管理类网站源码下载.zip
- (自适应手机端)响应式动力刀座pbootcms网站模板 五金机械设备类网站源码下载.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈