计算机中使用的是二进制,因此只有0和1这两种值。一个数在计算机中的表示形式,称为机器数。机器数所对应的原来的数制称为真值,由于采用二进制必须把符号数字化,因此通常是用机器数的最高位作为符号位的,但仅用来表示数符。若该为位0,则表示正数;若该位为1,则表示负数。机器数也有不同的表示法,常用有3种:原码、补码和反码。
机器数的表示法:用机器数的最高位代表符号(若为0,则代表正数;若为1,则代表负数),其数值位为真值数的绝对值。举例用8位二进制数表示一个数,如图0-39所示。
图0-39 用8位二进制表示一位数
在数的表示中,机器数与真值的区别是:真值带符号如-0011100,机器数不带数符,最高位为符号位,如10011100,其中最高位1代表符号位。
例如:真值数为-0111001,其对应的机器数为10111001,其中最高位1,表示该数为负数。
0.8.1.2 原码、反码、补码的表示在计算机中,符号位和数值位都是用0和1表示的,在对机器数进行处理时,必须考虑到符号位的处理,也就是对符号和数值的编码方法。常见的编码方法有原码、反码和补码这3中方法。下面分别讨论这3中方法的使用。
(1)原码的表示
一个数X的原码表示为:符号位用0表示正,用1表示负;数值部分为X的绝对值的二进制形式。记X的原码表示记为[X]原。
例如:当X= 1100001时,则[X]原=01100001。
当X=-1100101时,则[X]原=11110101。
在原码中,0有两种表示方式:
X= 0000000时,则[X]原=00000000。
X=-0000000时,则[X]原=10000000。
(2)反码的表示
一个数X的反码表示方法为:若X为正数,则其反码和原码相同;若X为负数,在原码的基础上,符号位保持不变,数值位各位取反。这里将X的反码表示记为[X]反。
例如:当X= 1100001时,则[X]原=01100001,[X]反=01100001。
当X=-1100001时,则[X]原=11100001,[X]反=10011110。
在反码表示中,0也有两种表示形式:
当X= 0时,则[X]反=00000000。
当X=-0时,则[X]反=10000000。
(3)补码的表示
一个数X的补码表示方式为:当X为正数时,则X的补码与X的原码相同;当X为负数时,则X的补码,其符号位与原码相同,其数值位取反加1。这里将X的补码表示记为[X]补。
例如:当X= 1100001时,则[X]原=01100001,[X]补=01100001。
当X=-1100001时,则[X]原=11100001,[X]补=10001111。
0.8.2 非数值数据的表示计算机中使用数据有数值型数据和非数值型数据两大类。数值数据用于表示数量意义;非数值数据又称为符号数据,包括字母和符号等。计算机除处理数值信息之外,还需要处理大量字符信息。例如,将用高级语言编写的程序输入到计算机时,人与计算机通信时所用的语言就不再是一种纯数字语言而是字符语言。由于计算机中只能存储二进制数,这就需要对字符进行编码了,从而建立字符数据与二进制串之间的对应关系,以便于计算机识别、存储和处理。这里介绍两种符号数据的表示。
0.8.2.1 字符数据的表示计算机中用得最多的符号数据就是字符,它是用户和计算机之间的桥梁。用户使用计算机的输入设备,通过键盘上的字符键向计算机内输入命令和数据,计算机把处理后的结果以字符的形式输出到屏幕或打印机等输出设备上。字符的编码方案有很多种,但使用最广泛的是ASCII码(American Standard Code for Informnation 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位为00001001。当去掉高3位时,低4位正好是二进制形式的0~9。 - 不可打印字符:共33个,其编码值为0
31(00000000011111)和(1111111),不对应任何可印刷字符。不可打印字符通常为控制符,用于计算机通信中的通信控制或对设备的功能控制。如编码值为127(1111111),是删除控制DEL码,它用于删除光标之后的字符。 - ASCII码字符的码值可用7位二进制代码或2位十六进制来表示。例如字符D的ASCII码值为(1000100)2或84H,数字4的码值为(0110100)2或34H等。
英语是拼音文字,所有文字均由26个字母拼组而成,所以使用一个字节表示一个字符足够了。但汉字是象形文字,汉字的计算机处理技术比英文字符复杂得多,一般用2字节表示一个汉字,由于汉字有一万多个,常用的也有六千多个,所以编码采用两字节的低7位共14位二进制来表示。
常用的支持汉字的计算机字符编码有UTF8、GB2312、GBK等。
更多信息请参考:baike.baidu.com/item/??…。
0.9计算机硬件基础问题小结题1:你用过的服务器型号有哪些?具体的配置有哪些? 题2:程序、进程和守护进程有什么区别? 题3:提升用户体验的网站优化解决方案有哪些? 题4:谈谈计算机中buffer与cache的简单区别。 题5:描述Raid 0、Raid1的主要特点。 题6:描述下电脑的主流硬件作用及之间的关系(CPU、内存、磁盘)。 题7:描述冯·诺依曼计算机的设计思想。 题8:请描述计算机数据的多种单位与换算。 题9:什么是二进制,计算机是如何用二进制表示数据的。 题10:为什么硬盘买来后实际大小比购买时标记的小? 题11:运维人员的三大核心工作职责是什么?