数据的表示与运算
进位计数法
进制转换
任意进制转十进制
十进制转任意进制
2^n次方之间的转换
二进制转其他 : n位一组
其他转二进制 :1位拆n位
编码
BCD码 +0110
余3码 :BCD码基础上+0011
2421码:BCD吗对应权值改成2421
处理字符和字符串
字符 - ASCII码
字符串 - 多个ASCII码
校验
奇偶校验 : 整体查对错
奇校验
奇偶校验码格式
例题
海明校验码:
需要多少个校验位:通过信息位个数得到校验位个数
海明码求解步骤 : 左边为高位
当数据位左边为低位的时候 要转化!
CRC 循环冗余码
例题
进位计数法
本质是多个不好表示,积攒成一个
进制转换
任意进制转十进制
十进制转任意进制
整数部分 : 除基取余法
- 小数部分 :乘基取整数法
2^n次方之间的转换
二进制转其他 : n位一组
四进制 : n=2 二位一组
八进制 是2的三次方 所以三位一组
其他转二进制 :1位拆n位
编码
BCD码 +0110
BCD之间做运算的时候,
当所得数据不在0~9的时候, +6 (0110)
最好还是把BCD转化为十进制,再转化回BCD码
余3码 :BCD码基础上+0011
0011 是3
2421码:BCD吗对应权值改成2421
处理字符和字符串
字符 - ASCII码
97 a
65 A
字符串 - 多个ASCII码
_ 代表空格
大端模式 : 先放高位 - 熟悉
小端模式 从右向左
常用的单位 字节 B = Byte = 8bit
校验
奇偶校验 : 整体查对错
码距: 找不同,不同的个数
00001 00005 码距就是1
12344 12355 码距就是2
码距为1: 所有的编号都有对应含义
码距为1的问题: 信息跳变之后,不知道是正确数据还是错误数据
码距为2:有的编号没有数据含义, 有了检错功能
当跳变到没有对应数据的码后,接收端就可以知道这个数据是错误的,也可以根据没有数据的码编写对应的错误码,表明错误原因
奇校验
奇校验 : 校验位+信息位 出现奇数个1
信息位 :本来是码距为1 ,加上 校验位后 码距变成了2 具有了检错功能
特殊情况 : 当两位数据都跳变为1的时候, 奇校验校验不出来
奇偶校验码格式
首位添加1位奇偶校验位
例题
奇校验 :校验位 + 数据位 有 奇数个1
海明校验码:
分组校验 -> 多个校验位 -> 校验位标注出错位
需要多少个校验位:通过信息位个数得到校验位个数
1010 -> 1011 ;数据1010 传输过程中变成1011; 校验位 :001 证明第1位出错,2,3位正确
假设信息位为n ,那么需要多少校验位才能说明所有的错误位置
假设校验位为k
每一个信息位 对应2种校验位状态 1:出错 ,0:正确
那么k个校验位可以对应2^k种状态 ;
n个信息位 + k个校验位 总共表示n+k个位置
再加上1个正确状态的位置
合计n+k+1个位置
我们需要2^k所有状态都覆盖着n+k+1个位置
所以2^k >= n+k+1
比如 1010 信息位是4,属于2~4这个范围 所以我需要的校验位就是3
海明码求解步骤 : 左边为高位
确定海明码位数
确定校验位的分布:从低位往高位放,校验位Pi放在 2^(i-1)位置上
校验位P1 放在 1位置上; P2 放在2位置上 ;P3 放在4位置上;P4 放在 8位置上
信息位的位置转化为二进制
D1放在3位置上(H3) 那就是 011;
D2放在5位置上(H5) 那就是 101;
D3放在6位置上(H6) 那就是 110;
D4放在7位置上(H7) 那就是 111;
根据对应位置 把D的值进行异或得到P
异或 : 不同为1 ,相同为 0 - 类似于偶校验 (填上这个结果,所有的个数为偶数)
纠错: 异或结果P再和位置信息异或得到S
Si =1 证明第i位出错
当数据位左边为低位的时候 要转化!
CRC 循环冗余码
信息位K位 + 校验位R位
信息码就是数据
生成多现实用来得到校验位
确定信息位和校验位的位数和N 确定多项式对应的系数二进制
信息位左移校验码位数R, 补零
相除(模2除法)取余数
最高位是1 上商数为1
减法: 相同为0,不同为1
例题