奇偶校验实验报告.pdf
竭诚为您提供优质文档/双击可除
奇偶校验实验报告
篇一:奇偶校验
实验项目四:数据的校验(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(接收数据