0.8.2 非数值数据的表示
您可以在百度里搜索“Linux/Unix技术丛书·跟老男孩学Linux运维:核心基础篇(上)(第2版) 艾草文学(www.321553.xyz)”查找最新章节!
0.8.2 非数值数据的表示
计算机中使用的数据有数值型数据和非数值型数据两大类。数值数据用于表示数量意义;非数值数据又称为符号数据,包括字母和符号等。计算机除了要处理数值信息之外,还需要处理大量字符信息。例如,将用高级语言编写的程序输入到计算机时,人与计算机通信时所用的语言就不再是一种纯数字语言而是字符语言。由于计算机中只能存储二进制数,这就需要对字符进行编码了,从而建立起字符数据与二进制串之间的对应关系,以便于计算机识别、存储和处理。这里介绍两种符号数据的表示。
1. 字符数据的表示
计算机中用得最多的符号数据就是字符,它是用户和计算机之间的桥梁。用户使用计算机的输入设备,通过键盘上的字符键向计算机内输入命令和数据,计算机将处理后的结果以字符的形式输出到屏幕或打印机等输出设备上。字符的编码方案也有很多种,但使用最广泛的是ASCII码(American Standard Code for Information Interchange)。ASCII码开始时是美国国家信息交换标准字符码,后来被采纳为一种国际通用的信息交换标准代码。
ASCII码由0~9这10个数符,52个大、小写英文字母,32个符号及34个计算机通用控制符组成,共有128个元素。因为ASCII码总共有128个元素,因此使用二进制编码表示时需用7位。任意一个元素均由7位二进制数表示,从0000000到1111111共有128种编码,可用来表示128个不同的字符。ASCII码表的查表方式是:先查列(高三位),后查行(低四位),然后按从左到右的书写顺序完成,如B的ASCII码为1000010。在ASCII码进行存放时,由于它的编码是7位,且因1字节(8位)是计算机中常用的单位,故仍以1字节来存放1个ASCII码字符,每字节中多余的最高位取0。如表0-7所示为7位ASCII码字符编码表。
表0-7 ASCII字符编码表
由表0-7可知,ASCII码字符可分为如下两大类。
• 打印字符:从键盘输入并显示的95个字符,如大小写英文字母各26个,数字0~9这10个数字字符的高3位编码(D6D5D4)为011,低4位为0000~1001。当去掉高3位时,低4位正好是二进制形式的0~9。
• 不可打印字符:共33个,其编码值为0~31(0000000~0011111)和(1111111),不对应任何可印刷字符。不可打印字符通常为控制符,用于计算机通信中的通信控制或对设备的功能控制。如编码值为127(1111111),是删除控制DEL码,它用于删除光标之后的字符。
ASCII码字符的码值可用7位二进制代码或2位十六进制代码来表示。例如字母D的ASCII码值为(1000100)2或84H,数字4的ASCII码值为(0110100)2或34H等。
2. 汉字的存储介绍
英语是拼音文字,所有文字均由26个字母拼组而成,所以使用1字节表示一个字符就足够了。但汉字是象形文字,汉字的计算机处理技术比英文字符要复杂得多,一般用2字节表示一个汉字。由于汉字有一万多个,常用的也有六千多个,所以编码采用2字节的低7位共14位二进制来表示。
常用的、支持汉字的计算机字符编码有UTF8、GB2312、GBK等。更多信息请参考https://baike.baidu.com/item/%E6%B1%89%E5%AD%97%E7%BC%96%E7%A0%81/7123465。 Linux/Unix技术丛书·跟老男孩学Linux运维:核心基础篇(上)(第2版)