数据的表示和运算(学习笔记)

一、进位计数制

二进制-->八进制:每三个二进制对应一个八进制位(注意补位)

二进制-->十六进制:每四个二进制位对应一个十六进制位(注意补位)

十进制-->r进制:整数部分:除基取余法,先取得的‘余’是整数的低位

小数部分:乘基取整法,先取得的‘整’是小数的高位

真值:实际的带正负号的数值

机器数:把正负号数字化的数

二、BCD码

(1)8421码

8421码的映射关系
0123456789
0000000100100011010001010110011110001001

若十进制加法使用8421码进行运算超出0000 - 1001 区间内需要 + 0110 来进行修正

eg :

十进制 : 9 + 9  = 18                               =   1        8         

8421码:1001 + 1001  = 10010  + 0110 = 0001 1000

(2)余3码:8421码 +  0011

余3码的映射关系
0123456789
0011010001010110011110001001101010111100

(3)2421码:改变权值定义

2421码的映射关系
0123456789
0000000100100011010010111100110111101111

规定0-4 :首位为 ‘0’     5-9:首位为 ‘1’

三、字符与字符串

(1)ASCll码

通常用8 bit 表示一个字符,最高位都为 0

共有128位字符,0-31、127为控制/通信字符;32-126为可印刷字符

所有大写字母,所有小写字母,所有数字的编码都连续

(2)字符串

从地址到高地址逐个字符存储,通常采用 ‘\0’ 作为结尾标志

对于多字节的数据,可以采用大/小端存储模式

大端模式:将数据的最高有效字节存放在低地址单元中

小端模式:将数据的最高有效字节存放在高地址单元中

四、数据的校验

(1)检验原理

由若干个代码组成的一个字称为码字

将两个码字逐位进行对比,具有不同的位的个数称为两个码字之间的距离

一种编码方案可能由若干个合法码字,各个合法码字间的最小距离称为“码距” (即每个码字之间有多少个 bit 位不同)

当码距=1时,无检错能力;当码距=2时,有检错能力;当码距>=3时,若设计合理,可能具有检错、纠错能力

(2)奇偶校验

奇校验码:整个校验码(有效信息和校验位)中“1"的个数为奇数

偶校验码:整个校验码(有效信息和校验位)中”1“的个数为偶数

eg:1001101 的奇校验码:1(奇校验位)1001101 偶校验码:0(偶校验位)1001101

偶校验的硬件实现:各信息进行异或运算(相同为’0‘,相异为’1‘)得到的结果为偶校验位

eg:1001101 的偶校验位为:1⊕0⊕0⊕1⊕1⊕0⊕1=0 即偶检验码为:01001101

若偶校验码在进行异或运算得到结果为’1‘时,则说明信息传输发生了错误

eg:当奇数个bit发生错误时 0⊕1⊕0⊕0⊕1⊕1⊕0⊕0=1 可以检错

当偶数个bit发生错误时 0⊕1⊕0⊕0⊕1⊕1⊕1⊕0 =0 无法检错

(3)海明码

海明码设计思想:将信息位分组进行偶校验-->多个校验位

2^k>=n+k+1:k为校验位个数

n12-45-1112-2627-5758-120
k234567

eg:信息码为 1010 对应的海明码应该为h1 h2 h3 h4 h5 h6 h7校验位的分布为2^n(n=0到k-1)

h7h6h5h4(p3)h3h2(p2)h1(p1)
1010

求校验位的值:

h3:3 -->0 1 1

h5:5 -->1 0 1

h6:6 -->1 1 0

h7:7 -->1 1 1

h1(p1) = h3⊕h5⊕h7 = 0⊕1⊕1 = 0

h2(p2) = h3⊕h6⊕h7 = 0⊕0⊕1 = 1

h4(p3) = h5⊕h6⊕h7 = 1⊕0⊕1 = 0

纠错校验方程:

s1 = p1⊕h3⊕h5⊕h7

s2 = p2⊕h3⊕h6⊕h7

s3 = p3⊕h5⊕h6⊕h7

在首位加上一个全体偶校验位h8

s3s2s1 =000 且全体偶校验成功则说明没有错误

s3s2s1 != 000 且全体偶校验失败则说明出现1位错误且eg:s3s2s1 = 100 则说明在h4发生错误

s3s2s1 != 000 且全体偶校验成功则说明出现2位错误

(4)循环冗余校验码(CRC码)

CRC码:K个信息位+R个校验位

CRC码思想:数据发送、接收方约定一个“除数”,K个信息位+R个校验位作为“被除数”,添加校验位后需保证除法的余数为’0‘,收到数据后,进行除法检验,若余数不为’0‘则需要重新发送

eg:设生成多项时G(X) = x^3+x^2+1,信息码位101001对应的CRC码

K=信息码长度=6 R= 生成多项式的最高次幂 = 3 校验码位数= 6+3 = 9

G(X)=1*x^3+1*x^2+0*x+1*x^0对应二进制码1101

信息码左移R位,低位补0,即101001000

对移位的信息码用生成多项式的二进制码进行模2除法,产生余数

得到余数为001 即CRC码 = 101001 001

检错、纠错能力:

可以检测处所有奇数个错误

可以检测出所有双比特的错误

可以检测处所所有小于等于校验位长度的连续错误

若选择合适的生成多项式,且2^R >= K+R+1,则可以纠正单比特的错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值