非数值数据的表示方法
所谓的非数值数据,通常是指字符、字符串、图形符号、汉字、逻辑数据等各种数据,这类数据不用来表示数值的大小,没有量值的概念。
由于计算机内部只能识别和处理二进制数据,所以即使是非数值数据,在计算机中也应该按照一定的规则用一组二进制编码来表示。
所谓的数据在计算机中的表示,实际上介绍各类数据在计算机中的编码方法。
所谓编码,就是用少量简单的基本符号,选用一定的组合规则,以表示出大量复杂多样的信息。在计算机中,所有的数据都用二进制数来表示。任何数据都用二进制数进行编码。
在计算机中所处理的数据主要包括以下几种类型:非数值数据、数值数据、十进制数据、数串和校验码。
非数值数据,又称为字符数据,通常是指字符、字符串、图形符号和汉子等各种数据。
数值数据:是可以测量的,可以计数出来的数据,是有“量值”概念的数据。
十进制数:把十进制数的各位数字变成一组对应的二进制代码,用4为二进制数表示1位十进制数,称为二进制编码的十进制数(Binary Code Decimal),即BCD码。
数据校验码:数据在存取和传送的过程中可能会发生错误,为了减少和避免错误,除了需要提高硬件本身的可靠性外,就是利用校验码。数据校验码是指那些能够发现错误或能偶自动纠正错误的数据编码。
字符数据的表示
对于字符,现在使用的最广泛的是美国国家信息交换标准字符码(American Standard Code for Information Interchange, ASCII).
常见的ASCII码用7位二进制表示1个字符,包括10个十进制数字(0-9)、52个英文大写和小写字母(A-Z,a-z)、34个专用符号和32个控制符号,共计128个字符。
字符在内存中存储:通常用一个字节来存放一个字符。一个字节右边的7位表示不同的ASCII代码,最左边一位可以作奇偶校验位,用来检查错误。
字符串:是指一串连续的字符。
字符串在存储器中存放有两种方法:“向量法”和“串表法”。“向量法”占用一片连续的空间,每个字节存放一个字符代码。所有字符在物理存储上是邻接的。
向量法是最简单、最节省存储空间的方法。当字符串需要进行删除和插入操作时,在删除或插入字符后面的子字符串需要全部重新分配存储空间,会花费较多的时间。
串表法:字符串的每个字符代码后有一个链接字,用以指出下一个字符的存储单元地址。
串表法不要求串中的各个字符在物理上相邻,原则上讲,串中各字符可以安排在存储器的任意位置上。在对字符串进行删除和插入操作时,只需修改响应字符代码后面的链接字即可。
汉字的表示
汉字的编码:中国国家标准总局1980年发布《信息交换用汉字编码字符集》,
GB2312编码适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆、新加坡等地。
1990年颁布了繁体字的编码标准GB12345-90《信息交换用汉字编码字符集第一辅助集》目的在于规范必须使用繁体字的各种场合。
1995年底推出的GBK编码是中文编码扩展国家标准,该编码兼容GB2312。
2000年底,国家标准总局又颁布了GB18030大字符集,这个标准全面兼容GB2312。GB18030有两个版本:GB18030-2000和GB18030-2005。 GB18030-2005是以汉字为主并包含多种我国少数民族文字的超大型中文编码字符集。
汉字的编码分为:国标码、区位码、机内码、字型码。
1. 国标码也称为汉字交换码。主要用于处理汉字信息处理系统之间或者通信系统之间交换信息使用。
2. 区位码是一种输入码,区位码定长4位,前2位表示区号,后2位表示位号,汉字的区号和位号均用十进制数表示。 它并不等于汉字国标码,它们两者之间的关系为:国标码=区位码(十六进制)+2020H。
3. 机内码是计算机内部的编码。 汉字可以通过不同的输入码输入,但在计算机内部的编码是唯一的。汉字机内码是两字节长的代码,它是在相应国标码的每个字节最高位上加1所得。机内码和国标码的关系是:机内码=国标码+8080
4. 汉字字形码是指确定一个汉字字形点阵的代码,又叫汉字字模码或汉字输出码。根据对汉字质量的不同要求,可有16*16、24*24、32*32、48*48的点阵结构。
前3种汉字编码的关系:
汉字国际码=汉字区位码(十六进制)+2020H
汉字机内码=汉字国标码+8080H
汉字机内码=汉字区位码(十六进制)+A0A0H
统一代码
Unicode 是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode1.0 于1991年10月发布,截止到目前共发布了18个版本。
Unicode可分为编码方式和实现方式两个层次。
编码方式
用一个16位的二进制数(两个字节)来表示Unicode的每一个符号。
实现方法
一个字符的Unicode的编码是确定的,但在实际的传输过程中, 由于不同系统平台的设计不一定一致。 Unicode的实现方式称为Unicode的转换格式(unicode Translation Format, UTF).
十六进制表示法
一个字节由8位组成。 在二进制表示法中, 它的值域是
. 如果看成十进制数, 它的值域就是
. 两种符号表示法都不是很方便。 二进制表示法太冗长,而十进制表示法的(未完待续)
关键词
数值数据:numerical data
非数值数据:non-numerical data
美国国家信息交换标准字符码: American Standard Code for Information Interchange, ASCII
字符串:string