继续讲解!先回顾2018年的场景!先教做人再教知识!强烈呼吁电工院的学生在物电楼上厕所的时候区分大小便池,小便请上小便池,大便去大便池。还有请记得便后冲水。当然不是所有的学生都不懂这些道理,但就是有那么一些低素质的学生连水都不冲。当然也会有一些老师居然也有类似的不文明行为。不知道这种素质的年轻人走入社会后会变成什么样?这就是发生在大学校园里面的现象。不要觉得奇怪,这种现象已经持续很多年了,至少在我回归学校的那一年就有这样的现象。有一点小小的进步也值得晒一下。厕所里面贴了请不要抽烟的告示,抽烟的人确实少了很多。但依旧还有那种厚颜无耻的人在厕所里面抽烟。请大家看见这样的人一起来声讨他,督促这种人改掉坏习惯。同学们应该具备基本的廉耻之心。希望在学校期间能不断的提升素质,打造一个好的校园环境。呼吁大家文明使用卫生间!2022年11月,回看本段内容,觉得当年自己是不是有点“二”?真把自己当成育德之人了?做梦吧!我应该没有这方面的能力,半点能力都没有!好好把课上完就很不错了!学生能听进多少呢?本人只能苦笑,想传播知识还是到网上吧!回归正题!
上堂课给出了示例程序让同学们进行消化。让我惊喜的是我的学生居然想出不同的办法来实现CRC,这就是一种进步,真正的思考了,掌握了!为15级的小杨同学点赞。现在已经很多年没有碰到好学的人了。给出他当年写的程序作为参考。首先是函数程序。
%%%%%%% 模二除法函数模块程序 %%%%
%%%%% File:function_two_div.m %%%%%
%%% Date:2018-10-24 Author:杨子逊 %%%%%
%*************** 函数名 *************%
function [ remainder ] = function_two_div(data_crc,crc_code)
%%%%%%%%% 程序说明 %%%%%%%%%%%
% 将输入的数组data_crc与crc_code进行模二除法运算,并输出余数
% 操作对象仅限为二进制数据的数组,输出的余数前n位位真正的余数
% (n位CRC位数)
% 比如:CRC-16的n为16
%%%%% 变量名定义 %%%%
%%% 输出变量
% remainder :余数
%%% 输入变量
% data_crc = 模二除法被除数
% crc_code = 模二除法除数
%----------------- 程序主体 ------------------%
data_length = length(data_crc); % 被除数长度
code_length = length(crc_code); % 除数长度
%%% 将除数补0,直到与被除数一样长,方便进行异或运算
crc_code = [crc_code zeros(1,data_length-code_length)];
%%% 进行模二除法运算循环
remainder = data_crc;
for i = 1:data_length - code_length + 1
if remainder(1) == 1
remainder = xor(remainder,crc_code);
end
remainder = [remainder(2:end) remainder(1)];
end
%%% 循环结束
end
%%% 结论
%% 本函数能进行CRC专用的模二除法运算。
没想到小黄车都撑不过2018年。
社会素质不提高,
共享类事物很难健康发展。
校园里面都存在大量的被破坏的共享单车。
当下,学生的素质真堪忧!回看本段,一直为我院学生的学习状况发愁!愁也解决不了问题,也就默默的写文章吧!
继续给出测试函数程序!
%%%%% CRC_TEST %%%%%%%
%%%% File:crc_test_sim1.m %%%%
%%% Date:2018-10-24 Author:杨子逊 %%
%********** 程序说明 *************%
% 本程序完成测试模二除法函数的功能,并用该函数进行
% CRC校验码的生成,最后测试校验是否准确
% 软件版本 matlab 6.5
%************** 程序主体 *************%
clc;
% 生成原始数据
%data_origin = randi(2,1,10)-1; % 2016b以上版本使用
data_origin = randint(1,20); % 旧版本使用
% 生成CRC—16的16位码,参照G(x) = x^16+x^12+x^5+1
crc_origin_code = [1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1];
%%% 生成CRC-16的校验码
% 给原始数据添加16个0在末尾
data_zero = [data_origin zeros(1,16)];
% 生成CRC校验码
crc_code = function_two_div(data_zero,crc_origin_code);
crc_code = crc_code(1:16);
% 组帧
data_crc_result = [data_origin crc_code];
% 如果出错 (假设第五位出错)
data_crc_error_result = data_crc_result;
data_crc_error_result(5) = ~data_crc_error_result(5);
%%%%%% 接收端检验
% 若remainder为全零数组,则代表信息无出错
remainder = function_two_div(data_crc_result,crc_origin_code)
% 若remainder_error_result数组不全为零,则代表CRC校验出信息有错误
remainder_error_result = function_two_div(data_crc_error_result,crc_origin_code)
%*********** END OF PROGRAM ***********%
%% 结论
%% 本程序可以完成CRC-16校验有效性的测试。
未完,待续!
修订记录
20181113 完成初稿;
20221114 修订内容v2;
-
通信网络
+关注
关注
21文章
2028浏览量
51972
原文标题:计算机通信与网络v2 实验课程(11)
文章出处:【微信号:gh_30373fc74387,微信公众号:通信工程师专辑】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论