文档详情

奇偶校验实验报告.pdf

发布:2025-05-18约7.88千字共14页下载文档
文本预览下载声明

竭诚为您提供优质文档/双击可除

奇偶校验实验报告

篇一:奇偶校验

实验项目四:数据的校验(2学时)

一、实验目的:

1.了解数据的校验机制。

*2.掌握海明码校验实施过程(选做)。

*3.掌握循环冗余码校验实施过程(选做)。

二、实验要求:

1.设计一个程序模拟奇偶校验实施过程(提示:主函

数、发送函数、传输函数、校验函数)。

首先奇偶校验过程的基本过程:奇偶校验位有两种类型:

偶校验位与奇校验位。如果一组给定数据位中1的个数是奇

数,那么偶校验位就置为1,从而使得总的1的个数是偶数。

如果给定一组数据位中1的个数是偶数,那么奇校验位就置

为1,使得总的1的个数是奇数。偶校验实际上是循环冗余

114

校验的一个特例,通过多项式x+1得到1位cRc。

*2.设计一个程序模拟海明码校验实施过程(提示:主

函数、发送函数、传输函数、校验函数、纠错函数)。

*3.设计一个程序模拟循环冗余码校验实施过程(提示:

主函数、发送函数、传输函数、校验函数、纠错函数)。

三、实验报告:

1.给出源程序和执行结果。

#include

#include

#include

voidproduct();

voidtrans();

voidpop();

intp1,p2;

inta[8]={0};

intmain()

{

product();//产生一个随机的八位二进制的数

trans();//设置传输出错一位或者没有出错的情况

pop();//判断有无出错的情况

return0;

}

214

voidproduct()

{

inti,data;intcount1=0;srand((unsigned)time(0));data

=0+rand()%128;//产生0-127的随机数printf(随机的产生

一个128以内的十进制数为%d\n,data);for(i=0;i

if(count1%2==0)//奇校验奇数个1校验位为0,偶数个1为

1a[7]=1;}for(i=0;ielse

a[7]=0;

p1=a[7];

printf(初始二进制校验位放在最高位它

为:%d\n,p1);

printf(产生随机二进制数为);

/*

while(i=0)

printf(%d,a[--i]);*/

for(i=7;i=0;--i)

{

printf(%d,a[i]);

}

printf(\n);

}

314

voidtrans()

{

inti;

srand((unsigned)time(0));

i=0+rand()%9;//产生0-8的随机数

if(i==0)

printf(机器内部设置传输过程中没有出错\n);

else

{

a[i-1]=(a[i-1]==0)?1:0;

printf(传输过程将机器内部的数据进行了一位改动,

改动位

为%d\n,i);

}

voidpop()

{

printf(接收数据计算出的校验位

为:%d\n,p2);if(p2!=a[7])printf(通过校验位p1与p2

的比较得出传输过程中数据出错了。

if(count2%2==0)p2=1;inti,count2=0;printf(接收数据

显示全部
相似文档