CRC校验实现
来源:互联网 发布:mac系统语言切换 编辑:程序博客网 时间:2024/04/30 06:30
1、实验题目:CRC 校验
PPP 协议受到数据帧后要对数据部分连同 FCS 字段做 CRC 校验,结果若不为“0”,则 可以肯定数据在传输过程中出错;结果若为“0”,则只能说明很大概率上数据在传输的过程 中没有出错,而不是百分之百不出错。这个概率与 CRC 校验时采用的除数有关,我们把使 用某个除数做 CRC 校验,结果为“0”且数据实际不出错的概率称为该除数的有效性。 本次试验要求同学们以实验的方法验证 CRC-16 的有效性。
2、实验内容
(1) 随机取 1 个 128 位数 A。
(2) 将 A 与 CRC-16 做除法得余数 B,A*216+B 保存在 C 中。
(3) 随机修改 C 中的 1 个比特,重新与 CRC-16 做除法运算,记录余数为 0 的二进制组 合。
(4) 随机修改 C 中的 2 个比特,重新与 CRC-16 做除法运算,记录余数为 0 的二进制组 合。
(5) 随机修改 C 中的 3 个比特,重新与 CRC-16 做除法运算,记录余数为 0 的二进制组 合。
import java.util.Random;//import java.util.Arrays;public class CRC {public static int[] crc={1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1}; //crc-16码,可修改 //生成一个n位的二进制数组,并自动补0public static int[] BornBinary(int num,int crcNum){int binary[]=new int[num+crcNum];Random r=new Random();for(int loop=0;loop<num;loop++){binary[loop]=r.nextInt(2); }for(int loop=num;loop<num+crcNum;loop++){binary[loop]=0; }return binary;}//获取冗余码FCS,n为crc码的位数public static int[] remainderGet(int[] binary,int n) {int[] remainder=new int[n];for(int loop=0;loop<n;loop++) //初始化{remainder[loop]=binary[loop]; } for(int loop=n;loop<binary.length;loop++) //循环{if(remainder[0]==0) //如果上次模二运算结果的首位为0,则跳过该次运算{}else{for(int loopA=0;loopA<n;loopA++){remainder[loopA]=remainder[loopA]^crc[loopA]; }}move(remainder,n-1);//左移数组remainder[n-1]=binary[loop];//将数字的下一位补入数组}for(int loopA=0;loopA<n;loopA++) //最后一次模二运算,获得最终的FCS码{remainder[loopA]=remainder[loopA]^crc[loopA]; }move(remainder,n-1);return remainder;}//数组从第二位开始的n位左移一位public static int[] move(int[] remainder,int n) {for(int loop=0;loop<n;loop++){remainder[loop]=remainder[loop+1]; }return remainder;}//输出数组的前n位public static void show(int[] binary,int n) {for(int loop=0;loop<n;loop++){ System.out.print(binary[loop]);} System.out.println();} public static void main(String[] args) { int[] binary=BornBinary(128,16); show(binary,128); int[] temp=remainderGet(binary,17); show(temp,16);for(int loop=0;loop<16;loop++){binary[loop+128]=temp[loop]; }temp=remainderGet(binary,17); show(temp,16);}}
阅读全文
0 0
- 汇编语言实现CRC校验
- CRC校验的实现
- CRC校验C实现
- Python实现CRC校验
- CRC校验实现
- CRC校验C语言实现
- VB CRC校验算法实现
- CRC校验C语言实现
- C#实现CRC校验算法
- C# 实现CRC校验代码
- crc校验的实现(移位寄存器)
- java来实现CRC校验
- [转帖]计算法简单实现crc校验
- [转帖]计算法简单实现crc校验
- 关于CRC冗余校验原理及实现
- CRC校验算法及C#程序实现
- CRC校验算法及C#程序实现
- crc循环校验原理和实现
- udev的工作过程
- activeMQ入门
- 2-2 Time类的定义
- JVM学习笔记(一)—— 运行时数据区
- 浅谈深度学习中的激活函数
- CRC校验实现
- 2、csdn word标题
- java排序之 --- 归并排序
- Java写的赛车游戏,入门者可以下载作为参考
- 在SpringMVC框架中实现文件上传和下载
- 内核kobject树形结构
- deepmind_lab 里面的相关的游戏场景引擎 《Quake III Arena》(雷神之锤III竞技场)
- 在EA中用ER图生成数据库
- 用户空间的设备与内核空间的设备、驱动关系