计算机中的编码
(1)二进制、十进制和十六进制等常用数制及其相互转换:
由于计算机的存储器和寄存器是两态部件,所以各种信息在计算机中是以二进制的方式存储和计算的。数制是由基数和基数个不同的数码组成的。
BCD码:十进制的二进制表示,
0:0000 1:0001 2:0010 3:0011 4:0100 5:0101
6:0110 7:0111 8:1000 9:1001
十进制的202可以表示成BCD码为0010 0000 0010;
十六进制 <-> 二进制:十六进制表示法是用16位二进制数字组成的,每4位二进制数字表示一位十六进制数,十六进制的数字表示从0-9,A,B,C,D,E,F共十六个字符.十六进制与二进制相互转换就是一位十六进制字符与四位二进制数字的相互转换过程.
十进制 <-> 二进制:十进制向二进制转换分两步进行:首先把该数的整数部分和小数部分转换为二进制数;然后再把这两部分合并起来即可.十进制的整数部分向二进制转换是通过对十进制不断的除2取余数得到,十进制小数部分通过乘2取整的方法获得,直到小数部分为0,所得到的整数部分就形成了二进制编码;同样的,二进制向十进制转换如下所示:
十进制数N=(RnRn-1...R1R0R-1...R-m)
= Rn *2n+Rn-1*2n-1+...+R1*2+R0+R-1*2-1...R-m*2-m
八进制 <-> 二进制:二进制向八进制转换的方法是从小数点开始分别向左右每3位二进制数编成一组,若不够3位 ,则小数点左侧的最高位和右侧的最低位用0补充,每一组用对应的八进制的数码表示即可;八进制向二进制转换的方法是从小数点开始,把每一位八进制的数码转换成对应的3位二进制即可.其小数点左侧的最高位或右侧的最低位的0可以省去.
(2) 计算机中的二进制数运算方法:
1. 定点数运算:要判断是否溢出?( )
加法:[X+Y]=([X]补+[Y]补) MOD 2
减法:[X-Y]=([X]补+[-Y]补)MOD 2
乘法:采用原码比较方便,使用原码一位乘法来求两个定点数的乘积。运算规则为:
乘积的符号位等于乘数和被乘数的符号位进异或;
乘积的值等于两数绝对值之积,即乘数和被乘数的绝对值进行移位相加;
除法:采用原码比较方便。运算规则为:
商的符号位同定点数原码乘法的处理方法,由两数的符号位进行异或
两数的绝对值部分进行相除。
2. 浮点运算
1) 加减法:
a) 对阶
b) 尾数进行加、减运算
c) 规格化
d) 舍入
e) 溢出判断
2) 乘除法:
浮点相乘,其积的阶码为两数阶码相加,积的尾数为两尾数相乘。
浮点数相除,其商的阶码为两数阶码之差,商的尾数为两尾数相除。
其结果都需要进行规格化处理,同时还需要进行溢出判断。
(3) 逻辑代数的基本运算和逻辑表达式的化简:
逻辑表达式就是以逻辑运算符把若干逻辑变量连接在一起表示某种关系的表达式。一个逻辑函数往往有多种不同的表达式。可以利用其本逻辑运算规律和一些常用的逻辑恒等式对逻辑表达式进行合并项、吸收项、配项、消去项等操作来化简。
基本的逻辑运算有“与”、“或”、“非”、“异或”。
常用的逻辑运算公式:
交换律:A+B=B+A A*B=B*A
结合律:A+(B+C)=(A+B)+C
分配律:A*(B+C)=A*B+A*C A+(B*C)=(A+B)*(A+C)
反演律:A+B= A * B
重叠律:A+A=A A*A=A
互补律:A+ A =1 A* A =0
对合律: A =A
0-1律:0+A=A A*A=0
(4) 定点数与浮点数的机内表示:
定点数的表示方法:
1. 定点整数:(符号位)(最高数据位)。。。(最低数据位)
2. 定点小数:(符号位)小数点(最高数据位)。。。(最低数据位)
浮点数表示方法:
浮点数编码:符号位-阶码-尾数,阶码由移码表示,尾数由补码或原码表示;
规格化处理:以纯小数表示尾数,分为原码和补码;#p#
(5) 原码、补码、反码、移码 ;
数值数据的机器内表示形式称为机器码,机器码所代表的数值为该机器码的真值。
原码表示:[X]=X或2n-1-X;+0和-0的表示不同;(定点整数)
[X]=X或1-X; (定点小数)
+0=00000000 -0=10000000 (2的n次方-1个编码)
补码表示:[X]=X或2n+X; (定点整数)
[X]=X或2+X; (定点小数)
0的编码唯一;00000000 (2的n次方个编码)
-1=10000000 (小数) -1=11111111(整数)
反码表示:[X]=X或(2n-1)+X; (定点整数)
[X]=X或(2-2-n+1)+X (定点小数)
+0=00000000 -0=11111111 (2的n次方-1个编码)
移码表示:[X]=X或2¬¬¬¬¬¬¬的(n-1)次方+X;0表示方法唯一10000000 (定点整数)
[X]=1+X; (定点小数)
0的编码唯一:10000000 (2的n次方个编码)
(6) ASCII码及汉字编码等常用的编码 :
ASCII码采用7bit编码, 共有128种编码;表示128个不同的字符;计算机里存储和传送单位通常使用Byte,所以7位的ASCII码也用一个字节来表示,最高一位没有用,通常也添0,也可以把它作为校验位或用来扩展字符集。
EBCDIC码采用8bit编码,共有256个编码,表示256个不同字符;
汉字编码:
1. 数字编码:每个汉字分配一个数字码,用以代表汉字;
2. 拼音码:用每个汉字的汉语拼音符号作为汉字的输入编码;
3. 字形码:以汉字的形状特点编码,例如五笔字型编码
汉字存储:以内码形式存放,以连续两个字节表示,两个字节的最高位均为1,汉字的内码是在计算机内处理汉字信息时采用的机内代码,把汉字的输入编码称为外码。
汉字输出:汉字的点阵字型码,点阵的密度决定了汉字的美观程度,汉字需要大量的存储空间,例如16*16点阵,每个汉字要占用16*16=32Byte
(7) 数据校验码:计算机在存储和传送数据过程中,为了保证数据的准确性,一般都要进行数据校验和纠错。通常使用校验码的方法来检测数据是否出错。其基本思想是把数据可能出现的编码区分为合法编码和错误编码。
使用校验码来查错,涉及到一个重要概念——码距。它是指一个编码系统中任意两个合法编码之间至少有多少个二进制位不同。码距为1的编码是不能发现错误的。
常用的校验码有3种。
▲奇偶校验码:不能发现偶数位错误
该编码通过增加一位校验位来使编码中1的个数为奇数(奇校验)或者为偶数(偶校验)从而使码距变为2,来检测数据代码中奇数出错的编码。因为其利用的是编码中1的个数的奇偶性作为依据,所以不能发现偶数位错误。
校验位的添加方法有三种:
水平奇偶校验码:对每个数据的编码添加校验位
垂直奇偶校验码:对一组数据的相同位添加一个校验位;
水平垂直奇偶校验码:先对一组数据垂直校验,所得结果再添加一位水平校验位;
▲海明校验码:
也是利用奇偶性来检错和纠错,通过在数据之间插入k个校验位,扩大数据编码的码距,从而有能力检测出n位错,并能纠正1位或n位错。
▲循环校验码(CRC)校验码:采用模2运算,可检测所有等于、小于校验位长度的突发错,利用生成多项式为k个数据位产生r个校验位进行编码,其编码长度为n=k+rk,又称为(n,k)码,生成的多项式与被校验的数据无关。
概念:
编码效率=(log2(码字数))/总位数:
例题:在无线电通信中常采用7中取3定比码,它规定码字长为7位,并且其中总有且仅有3个“1”。这种码的编码效率为 ;35=
举一个例子:关于二进制的编码的考试题目
根据“冗余校验”的思想,码距可用来判断使校验码制冗余的程度,并估价其查错、纠错能力。“8421”码的码距为A ,因而它B 。若一组海明(Hamming)码有效信息位k=4,校验位r=3,则其码距为C ,用它能够发现D位错,并可纠正E位错。
A、C、D、E: ①0 ②1 ③2 ④3 ⑤4 ⑥7
B: ①能发现1位错 ②能纠正1位错 ③能发现并纠正1位错 ④不能查错、纠错
本题主要考查数据校验方法的相关知识。
在这部分知识点中有个很重要的概念——码距。码距是指一个编码系统中任意两个合法编
这里有个定理,即若一种校验码合法码字集的码矩为2d+1,则它能够发现2d位错,并能纠正d位错
A: 2 B: 4 C: 4 D: 3 E: 2