校验码

计算机网络数据链路层:海明码的工作流程

无人久伴 提交于 2020-01-22 06:20:04
在上一节我们讲到了数据链路层差错控制中用于检测的冗余编码,这一节我们来看看用于纠错的海明码。这一节我们主要用一个例子看看海明码是如何工作的。 假如发送一段二进制信息码为101101,现加上海明码来用其纠错 第一步:确定校验码位数r 具体有多少位校验码取决于一个海明不等式: 2^r>=k+r+1 其中k为二进制信息吗的位数。 在这段数据中,k=6,我们暂且把它们从左至右标号a1,a2……a6。所以满足不等式的r值为4,也就是四位校验码,我们为它们编号r1、r2……r6。 第二步:确定校验码和数据的位置及校验码值 我们用一个表格形象地说明这个问题: 先在表格中插入校验码,插入校验码的方法是:r1插在2 0位置中……r n插在2^(n-1)位置中。然后再将数据位按从左到右的顺序插入剩余的空位: 那么如何确定各个已经确定好编号位的具体二进制值呢?我们先将数据位的值插入对应编号的下方 然后看看这些冗余检验码可以检验哪些位,具体是这样做的: 把各个位数对应的二进制码写进表格的对应位置,然后再看检验码对应的二进制位数上,哪一位是“1”,那么这个校验码就可以参与到这一位为“1”的二进制位数对应的数据的校验工作。比如r1的第四位为“1”,那么它可以负责a1、a2、a4、a5的校验工作,现将r1、a1、a2、a4、a5提出从左至右进行异或运算,令等式等于0,解方程获得r1的具体值。 r1 xor a1

计网期末复习(名词解释)

佐手、 提交于 2020-01-18 09:34:26
名词解释背诵 一、物理层 多路复用 FDM TDM CDMA PCM 二、数据链路层 奇偶校验码 海明距离 纠错码 检错码 校验码位数(开环、闭环) 成帧 CRC 三、MAC子层 CSMA/CD 隐藏终端问题和暴露终端 四、网络层 网络地址转换协议(NAT) 拥塞控制 地址解析协议(ARP) MTU 广播、多播 子网掩码 CIDR 五、 传输层 六、其他 网络协议(Protocol) 网关 一、物理层 多路复用 物理信道被多个信号所共享,这种共享形式被称为多路复用技术。常用的多路复用技术有时分复用、频分复用、码分复用。 FDM FDM是 频分多路复用 ,在物理信道的可用带宽超过单个原始信号所需带宽的情况下,可将该物理信道的 总带宽分割 为若干个与传输单个信号带宽相同(或略宽)的子信道,每个子信道传输一路信号。 TDM TDM是 时分多路复用 ,在这种方式下,每个用户轮流地在一个非常短的时间内占用整个带宽,以循环的方式轮流工作。 CDMA PCM PCM(Pulse Code Modulation)是脉冲编码调制技术,是一种将模拟信号数字化的技术,将连续变化的模拟信号进行抽样、量化和编码产生数字信号。 二、数据链路层 奇偶校验码 奇偶校验码是数据链路层中差错处理机制中的一种检错码,通过增加1位冗余位使得码字中“1”的个数恒为奇数或偶数的编码方法。 海明距离

PIC的HEX文件(校应和详解)

最后都变了- 提交于 2020-01-11 15:56:39
校验码的算法:计算校验码前所有字节的累加和(不进位),校验码 = 0x100 - 累加和。 例如: : 040000002 CEF10F0E1 # 这里 E1 为校应码 python计算校应码(来验证校应码计算公式): 代码: # data 为hex某一行的字符串数据 def calc_checksum ( data ) : sum = 0 result = 0 print ( "校应数据长度:" , len ( data ) ) for i in range ( 0 , len ( data ) , 2 ) : sum = ( ( int ( data [ i : i + 2 ] , 16 ) ) + checksum ) result = ( 256 - sum ) & 0xff return result 可以看到确实是0xE1,到此校验和算法验证成功。 来源: CSDN 作者: Yfw&武 链接: https://blog.csdn.net/u012577474/article/details/103934080

Hamming校验码

偶尔善良 提交于 2019-12-28 01:19:05
可参考:http://winda.blog.51cto.com/55153/1068000 Hamming校验码作用:用于校验通信数据,防止出现错误,并具有一定的纠错功能。 汉明码在传输的消息流中插入验证码,当计算机存储或移动数据时,可能会产生数据位错误,以侦测并更正单一比特错误。由于汉明编码简单,它们被广泛应用于内存(RAM)。 1,获取最小校验码位数:对于有n个信息位的信息,需要k个校验位,满足:2^k-1>=n+k;使k最小即可得出n个信息位所需最小的校验码数; 2,确定校验码所在位置:共有(n+k)个位串,即校验码所在位和信息所在位;只要确定校验码,剩下的位就是信息位。校验码位在从左起的第2^k位处; 3,确定每一位校验码的值:这与其要校验的位有关,第i位的校验规则,从自身起连续校验i位,然后跳过i位,再连续校验i位,再跳过i位,...以此推理。整个校验序列中只有校验位是不确定的,最后根据是奇校验还是偶校验确定校验位的值。 4,如何校验字串:各位校验码对其所校验的位进行异或运算,若整个码字不发生差错,在偶校验下各组结果应为0,在奇校验下各组结果应为1; 5,如何纠错:由于汉明校验码是一种多重校验码,所以可以确定是哪位出错,直接对该位取反即可。 来源: https://www.cnblogs.com/itdev/p/6618968.html

汉明码(Hamming Code)原理及实现

早过忘川 提交于 2019-12-28 01:14:08
汉明码实现原理 汉明码(Hamming Code)是广泛用于内存和磁盘纠错的编码。汉明码不仅可以用来检测转移数据时发生的错误,还可以用来修正错误。(要注意的是,汉明码只能发现和修正一位错误,对于两位或者两位以上的错误无法正确和发现)。 汉明码的实现原则是在原来的数据的插入k位数据作为校验位,把原来的N为数据变为m(m = n +k)位编码。其中编码时要满足以下原则: 2 ^ k - 1 >= m 其中 ( m = n + k ) 这就是Hamming不等式,汉明码规定,我们所得到的m位编码的2^k ( k>=0 && 2^k < m)位上插入特殊的校验码,其余位把源码按顺序放置。 汉明码的编码规则如下: 在新的编码的2^(k - 1)( k >= 0)位上填入0(即校验位) 把新的编码的其余位把源码按原顺序填入 校验位的编码方式为:第k位校验码从则从新的编码的第2^(k - 1)位开始,每计算2^(k - 1)位的异或,跳2^(k - 1)位,再计算下一组2^(k - 1)位的异或,填入2^(k - 1)位,比如: 第1位校验码位于新的编码的第1位(2 ^(1-1) == 1)(汉明码从1位开始),计算1,3,5,7,9,11,13,15,...位的异或,填入新的编码的第1位。 第2位校验码位于新的编码的第2位(2 ^(2-1) == 2),计算2,3,6,7,10,11,14

15位身份证号码转18位算法

房东的猫 提交于 2019-12-26 07:09:57
身份证号码15位升18位 身份证18位验证 18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确的规定。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称"社会保障号码"更名为"公民身份号码",另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。GB11643-1999《公民身份号码》主要内容如下: 一、范围 该标准规定了公民身份号码的编码对象、号码的结构和表现形式,使每个编码对象获得一个唯一的、不变的法定号码。 二、编码对象 公民身份号码的编码对象是具有中华人民共和国国籍的公民。 三、号码的结构和表示形式 1、号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 2、地址码 表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。 3、出生日期码 表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。 4、顺序码 表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 5、校验码 (1

3.计算机网络-物理层、链路层

偶尔善良 提交于 2019-12-24 07:43:56
物理层概述 物理层的作用 作用 连接不同的物理设备,传输比特流 传输介质 双绞线 同轴电缆 光纤 无线介质 红外线、红外线、激光 比特流 高低电平 表示比特流 物理特性 机械特性 电气特性 功能特性 过程特性 信道的基本概念 信道是往一个方向传送信息的媒体,一条通信电路包含一个接收信道和一个发送 ??? 发送和接收会不会冲突?冲突了怎么办? 单工通信信道 只能一个方向通信,没有反方向反馈的信道,如 有线电视、无线电收音机等 半双工通信信道 双方都可以发送和接收信息,但不能双方同时发送,也不能同时接收 全双工通信信道 双方都可以同时发送和接收信息 分用-复用技术 复用技术 频分复用 时分复用 波分复用 码分复用 链路层概述 数据 帧 “帧”是数据链路层数据的基本单位; 发送端在网络层的一段数据前后添加特定标记形成“帧”; 接收端根据前后特定标记识别出“帧” 物理层不管帧结构,链路层会对帧进行解析 帧结构 帧首部和尾部是特定的 控制字符 ,是特定比特流 帧首部 : SOH:00000001 帧尾部 : EOT:00000100 ?? 数据里面恰好有这些比特流咋办? -> 透明传输 透明传输 "透明"的意思是控制字符在帧数据中时,要当做不存在去处理 若非透明处理,数据报中恰好存在EOT字符,那么这个数据帧会被错误处理 数据报中的控制字符前添加转义字符

海明码,码距,海明校验码

依然范特西╮ 提交于 2019-12-20 07:02:50
海明校验码是由RichardHamming于1950年提出、目前还被广泛采用的一种很有效的校验方法。它的实现原理,是在k个数据位之外加上r个校验位,从而形成一个k+r位的新的码字,使新的码字的码距比较均匀地拉大。 这种海明校验的方法只能检测和纠正一位出错的情况。所以如果有多个错误,就不能查出了。 什么是码距? 两个码组对应位上数字的不同位的个数称为码组的距离,简称码距,又称海明(Hamming)距离。 计算码距的一种方法,就是对两个位串进行异或(xor)运算,并计算出异或运算结果中1的个数。 例如110和011这两个位串,对它们进行异或运算,其结果是: 110⊕011=101; 异或结果中含有两个1,因此110和011之间的码距就等于2。 简单来说,就是,两对应相同位数的不同即码距+1,从首位开始对应; 例如00110和00100码距为1,12345和13344码距为2,Caus和Daun码距为2, 1011001和10110110码距d=2 校验码 海明校验码公式(假设为 k个数据位 设置 r个校验位 ) 2^r-1>=k+r(能得知r和k的关系) 码:101 即 k=3 2^r-r>=k+1=4 易错点:2^r=r个2相乘,不是2乘r 选最小的码距 最小r为3 海明码长度:r+k=3+3=6 注意:海明校验码是放在2的幂次位上的,即“1,2,4,8,16,32······ ”

CRC校验码(C#实现)

倖福魔咒の 提交于 2019-12-20 03:54:26
CRC校验(循环冗余校验)小知识 CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。 适用规则: CRC-CCITT是一个17位生成多项式G=[1 0001 0000 0010 0001],用多项式形式表示为G(x)=x16+x12+x5+1,由它产生的检验码R的二进制位数是16位(2字节) using System ; using System . Collections . Generic ; using System . Linq ; using System . Threading . Tasks ; namespace MeterReading . API . App_Code { public class CRC16CCITT { private static readonly List < int > calcValus = new List < int > { 0x0000 , 0x1021 , 0x2042 , 0x3063 , 0x4084 , 0x50a5 , 0x60c6 , 0x70e7 ,

计算机基础知识

我与影子孤独终老i 提交于 2019-12-17 01:04:53
计算机基础--检错与纠错码1 检错与纠错的原由 奇偶校验码 1、水平奇校验 2、水平偶校验 3、不足和改进 海明校验码 1、编码纠错理论--编码最小距离(码距) 2、检错 3、纠错 4、不足 检错与纠错的原由 元件故障、噪声干扰等因素常常导致计算机在传输、存储或处理的过程中出现错误,故采用专门的逻辑电路对信号进行编码有便于检测错误甚至校验错误。本文介绍奇偶检验码和海明码。 奇偶校验码 这是一种最简单且应用最广泛的检错码,用的是以为校验位的奇偶校验。分成水平奇校验和水平偶校验。 1、水平奇校验 设数据X是一个n位字,在其高位前增加1位奇校验位,保证数据(包括奇校验位在内)的n+1位中,1的个数为奇数,这也就是奇校验称呼的由来。 例: 有X = 0100010,采用水平奇校验时,由于X本身的1的个数是2个,所以在高位前添加1使得X的1的个数是奇数个,即X变成10100010. 2、水平偶校验 与奇校验类似,水平偶校验在数据的高位前添加一位校验位使得此数据各位上1的个数为偶数。当传输到对方的时候可以通过对传过来的数据X进行检测,如果没有出现问题则可认为在传输或者存储的过程中没有发生1位错误。 例: 有X = 0100010,采用水平奇校验时,由于X本身的1的个数是2个,所以在高位前添加0使得X的1的个数是偶数个,即X变成00100010.当传输到对方的时候可以通过对传过来的数据X进行检测