预习非数值数据的编码方式
非数值数据的编码方式
1.逻辑值、字符等数据都是非数值数据,在机器内部他们也用二进制表示(因此n位二进制可表示n个逻辑值,运算是按位运算,例如“与”、“或”、“逻辑左移”、“逻辑右移”等)。
2.逻辑值:每个字或其他可寻址单位(字节、半字等)是作为一个整体数据单元看待的。(有些时候还需要将一个n位数据看成由n个1位数据组成,每个取值为0或1)。
3.逻辑数据和数值数据都是一串0/1序列,在形式上无任何差异,需要通过指令的操作码类型来识别它们。(逻辑运算指令处理的是逻辑数据,算术运算指令处理的数值数据)。
非数值数据的类型
1.西文字符
1.西文由拉丁字母、数字、标点符号及一些特殊符号组成,它们统称为字符。
2.字符主要用于外部设备和计算机之间交换信息(目前计算机中使用最广泛的西文字符集及其编码是ASCII码!)。
7个二进位b6b5b4b3b2b1b0从0000000到1111111共表示128种编码,可用来表示128个不同的字符,其中包括10个数字、26个小写字母、26个大写字母、算术运算符、标点符号、商业符号等
ASCII字符有两个规律
(1)字符09这十个数字的高3位编码为011,低4位分别为00001001。当去掉高3位时,低4位正好是0~9这10个数字的8421码。
(2)英文字母字符的编码值也满足正常的字母排序关系,而且大、小写字母的编码之间有简单的对应关系。
2.汉字字符
1.中文信息的基本组成单位是汉字,汉字也是字符。
2.汉字系统必须处理以下几种汉字代码:输入码、内码、字模点阵码。
3.汉字的输入码:利用英文键盘输入汉字(汉字的输入码的码元是西文键盘中的某个按键)。
4.字符集与汉字内码必须考虑的因素:
(1)不能有二义性,即不能和ASCII码有相同的编码。
(2)要与汉字在字库中的位置有关系,以便于汉字的处理、查找。
(3)编码应尽量短。
5.GB2312国标字符集由:第一部分字母、数字和各种符号;第二部分为一级常用汉字;第三部分为二级常用字。
6.汉字的区位码并不是国标码,每个汉字的区号和位号必须各自加上32,这样区号和位号各自加上32后的相应二进制码才是它的国标码。
7.汉字的字形:字模点阵描述和轮廓描述。
数据校验码
1.采用的思想是冗余校验的思想,即除原数据信息外,还增加若干位编码。
2.当数据被存入时对数据M进行运算,以产生相应的代码是P=F(M)
,这里P就校验码。
3.比较的结果
(1)没有检测到错误,得到的数据位直接传送出去
(2)检测到差错,并可以纠错。数据位和比较结果一起送入纠错器,然后将产生的正确的数据位传送过去
(3)检测到错误,但无法确认哪位出错,因而不能进行纠错处理,此时,报告出错情况。
4.由若干位代码组成的一个字叫码字,将两个码字逐位比较,具有不同代码的位的个数叫做这两个码字之间的距离,也称海明距离。
5.当d<=4时,关系如下:
(1)如果码距d位奇数,则能发现d-1位错,或者能纠正(d-1)/2位错。
(2)如果码距d位偶数,则能发现d/2位错,能纠正(d/2-1)位错。
奇偶效验码
1.是一种通过增加冗余位使得码字中"1"的个数恒为奇数或偶数的编码方法。
2.实现方法:在数据存储和传输中,字节中额外增加一个比特位,用来检验错误。校验位可以通过数据位异或计算出来。
海明效验码
1.将有效信息按某种规律分成若干组,每组安排一个校验位,做奇偶测试,就能提供多位检错信息,以指出最大可能是哪位出错,从而将其纠正。实质上,海明校验是一种多重校验。
循环冗余效验码
1.这种编码基本思想是将要传送的信息M(X)表示为一个多项式L,用L除以一个预先确定的多项式G(X),得到的余式就是所需的循环冗余校验码。
2.crc检验主要有计算法和查表法两种方法,网上很多实现代码。
3.优点①可检测出所有奇数位错;②可检测出所有双比特的错;③可检测出所有小于、等于校验位长度的突发错。