一、非数值数据的编码表示
1.逻辑值
- n 位二进制数可表示 n 个逻辑值
- 逻辑数据只能参加逻辑运算
- 逻辑数据和数值数据都是一串0/1序列
2.西文字符
- 组成:拉丁字母、数字、标点符号以及一些特殊符号组成
- 字符的集合叫字符集,字符集中每一个字符都有一个二进制编码的0/1序列,构成了该字符集的代码表(码表)
- 主要用于外部设备和计算机之间交换信息
- 西文字符的内码就是ASCII码
3.汉字字符
- 输入码:由于汉字字数多,无法使每个汉字与西文键盘上的一个键相对应,因此必须使每个汉字用一个或几个键来表示,这种对每个汉字用相应的按键进行的编码表示就称为汉字的输人码,又称外码。因此汉字的输人码的码元(即组成编码的基本元素)是西文键盘中的某个按键
- 字符集与汉字内码:汉字被输人到计算机内部后,就按照一种称为内码的编码形式在系统中进行存储、查找,传送等处理。对于西文字符,它的内码就是ASCII码。对于汉字内码的选择,必须考虑以下几个因素:
(1)不能有二义性,即不能和 ASCII 码有相同的编码
(2)要与汉字在字库中的位置有关系,以便于汉字的处理、查找
(3)编码应尽量短
二、数据的宽度和存储
1.数据的宽度和单位
- 计算机中处理、存储和传输信息的最小单位:比特(bit)
- 计算机中,二进制信息的计量单位:字节(byte)
- 1 byte = 8 bit
- 不同计算机中字的长度和组成不完全相同,字用来表示被处理信息的单位,用来度量各种数据类型的宽度
- 字长等于CPU内部用于整数运算的运算器位数和通用寄存器宽度
- 同一类型的数据并不是所有机器都采用相同的数据类型,分配的字节数随机器和编译器的不同二不同
2,数据的存储和排列顺序
- 多字节数据存放在连续的字节序列中,各字节在连续字节系列中的排列顺序不同,有两种排列方式:大端和小端
- 大端方式将数据的最高有效字节MSB存放在低地址单元中,将最低有效字节LSB存放在高地址单元中,小端与之相反
- Sun(大端方式)和Alpha(小端方式)之间不能直接进行数据传送,因为它们采用了不同的存放方式
三、数据效验码
1.效验码
- 定义:除原数据信息外,还增加若干位编码,这些新增的代码称为效验码
- 海明距离:由若干位代码组成的一个字叫码字,将两个码字逐位比较,具有不同代码的位的个数叫做这两个码字间的距离
2.奇偶效验码(对整个数据编码生成一个校验位)
- 奇偶效验根据数据的奇偶性变化来检错,只能检测奇数个错,不具有纠错能力
- 奇偶效验码常用于存储器读写检查或字节传输过程中的数据效验
3.海明效验码(多重奇偶校验码)
- 海明效验是分组奇偶效验,单纠错码(SCE)只能纠正一位错,“纠一检二”码(SEC-DED)可纠正一位错并检测两位数
- 效验位和故障字的位数是相同的
- 分组的确定:数据位和校验位一起存储,通过它们各位排列的码字中的出错位置与故障字的数值建立关系,这样就可以通过故障字的值找到该码字中的哪一位发生了错误
a.故障字各位全部为0,没有发生错误
b.故障字有且只有一位1.则只有一个发生错误,不需要纠正
c.故障字中多位为1,表示有一个数据位出错,其位置在码字中的位置通过故障字的数值确定,纠正只需要将出错位取反 - 校验码的生成和检错,纠错:对每组采用相应的奇偶校验,得到相应的一个校验码。
- 校验码若同时具有发现两位错和纠正一位错的能力,称为单纠错和双纠错码,简称“纠一检二”码
循环冗余效验码
- 简称CRS码,是一种具有较强检错、纠错能力的效验码,常用于外存储器的数据效验
- 循环冗余码效验通过某种数学运算在数据和效验位之间建立约定关系,主要用于对大批量数据的存储或传输效验