1、第三章 数据在计算机中的表示3.1 进位计数制及相互转换进位计数制及相互转换 3.2 数据在计算机中的表示数据在计算机中的表示 教学说明 1.学时:课堂教学学时:课堂教学2-4学时,上机实验无学时,上机实验无 2.目标:掌握数制以及数据在计算机中的表示目标:掌握数制以及数据在计算机中的表示 3.内容:数制及其转换内容:数制及其转换 各种数据在计算机中的表示各种数据在计算机中的表示 在计算机内部,数据的存储和处理都是采用二进制在计算机内部,数据的存储和处理都是采用二进制数,主要原因是:数,主要原因是:(1)二进制数在物理上最容易实现。)二进制数在物理上最容易实现。(2)二进制数的运算规则简单,这
2、将使计算机的)二进制数的运算规则简单,这将使计算机的硬件结构大大简化。硬件结构大大简化。(3)二进制数的两个数字符号)二进制数的两个数字符号“1”和和“0”正好与正好与逻辑命题的两个值逻辑命题的两个值“真真”和和“假假”相对应,为计算相对应,为计算机实现逻辑运算提供了便利的条件。机实现逻辑运算提供了便利的条件。但二进制数书写冗长,所以为书写方便,一般用十但二进制数书写冗长,所以为书写方便,一般用十六进制数或八进制数作为二进制数的简化表示。六进制数或八进制数作为二进制数的简化表示。3.13.1进位计数制及相互转换进位计数制及相互转换 3.1进位计数制及相互转换进位计数制及相互转换 3.1.1进位
3、计数制进位计数制 ariimni1N=aN=an-1n-1r rn-1n-1a an-2n-2r rn-2n-2a a0 0r r0 0a a-1-1r r-1-1a a-m-mr r-m-mR R进制数进制数N可表示可表示 为:为:R进制进制数用数用 r个基本符号(例如个基本符号(例如0,1,2,r-1)表示数值)表示数值基数基数权权数码数码678.34=6102+7101+8100+310-1+410-23.1.2不同进位计数制间的转换不同进位计数制间的转换 r 进制转化成十进制进制转化成十进制r 进制转化成十进制:数码乘以各自的权的累加进制转化成十进制:数码乘以各自的权的累加 例:例:1
4、0101(B)=24+22+1=21 101.11(B)=22+1+2-1+2-2=5.75 101(O)=82+1=65 71(O)=78+1=5 101A(H)=163+16+104106进制表示符号进制表示符号B 二进制二进制O八进制八进制D十进制十进制H十六进制十六进制演示:演示:十进制数转换成八进制十进制数转换成八进制数数十进制转化成十进制转化成 r r 进制进制整数部分整数部分:除以:除以 r取余数,直到商为取余数,直到商为0,余数从右到左排列。,余数从右到左排列。小数部分小数部分:乘以:乘以 r取整数,整数从左到右排列。取整数,整数从左到右排列。100(D)=144(O)=64(
5、H)例例 100.345(D)1100100.01011(B)1.3800.34520.69022 0.760 2 1.520 2 10025022521226232100010011 1.04八进制八进制100812818044110016604616十六进制十六进制演示演示二进制、八进制、十六进制数间的相互转换二进制、八进制、十六进制数间的相互转换 64(H)=0110 0100(B)6 4144(O)=001 100 100(B)1 4 41 101 101 110.110 101(B)=1556.65(O)1 5 5 6 6 511 0110 1110.1101 01(B)=36F.D
6、4(H)3 6 F D 4一位八进一位八进制数对应三位二进制数制数对应三位二进制数一位一位十六进制数对应四位二进制数十六进制数对应四位二进制数二进制转化成八二进制转化成八(十六十六)进制进制)整数部分:从右向左按三整数部分:从右向左按三(四四)位进行分组位进行分组 小数部分:从左向右按三小数部分:从左向右按三(四四)位进行分组位进行分组 不足补零不足补零二进制、八进制、十六进制数间的关系 八进制八进制 对应二进制对应二进制 十六进制十六进制 对应二进制对应二进制 十六进制十六进制 对应二进制对应二进制0000000008100010011000191001201020010A101030113
7、0011B1011410040100C1100510150101D1101611060110E1110711170111F11113.2 数据在计算机中的表示 数值 十二进制转换 西文 ASCII码 汉字 输入码机内码转换 声音、图像 模数转换 二十进制转换 西文字形码 汉字字形码 数模转换 内存 输入设备 输出设备 数值 西文 汉字 声音、图像 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0 1符号位 “0”表示正、“1”表示负 定点整数定点整数 3.2.1数值1.1.数的编码表示数的编码表示 1 10 01 10 01 11 10 00 0S小数点无符号位S小数点 定点小数定点
8、小数 符号位 “0”表示正、“1”表示负运算带来问题复杂性运算带来问题复杂性:3.2.1数值1.1.数的编码表示数的编码表示 1 10 01 10 01 11 10 00 0例3.9 (-5)+4的结果应为-1。但在计算机中若按照上面讲的符号位同时和数值参加运算,则运算如下:10000101 -5 的 机 器数 +00000100 4 的 机 器数 10001001 运算 结 果为-9 若要考虑符号位的处理,则运算变得复杂。为了解决此类问题,引入了多种编码表示方式,常用的是:原码、反码和补码,其实质是对负数表示的不同编码。(3)补码补码0X1|X|0=XX=0+7:00000111 +0:00
9、000000 -7:10000111 -0:10000000 X原原=+7:00000111 +0:00000000 0X1|X|0=XX=00X1|X|+10=XX X0 X0 X X原原=2 2n n-X=2-X=2n n+X 0X-2+X 0X-2n n X X0 0为符号位,若为符号位,若n=7n=7,即字长,即字长8 8位,则位,则 X X取值范围:取值范围:-127-127+127+127 +0+0原原=00000000=00000000 -0-0原原=10000000=10000000 采用原码表示法简单易懂,但它最大采用原码表示法简单易懂,但它最大缺点是加法运算电路复杂,不容易
10、实现。缺点是加法运算电路复杂,不容易实现。反码表示法反码表示法 对于定点整数,反码表示的定义是:对于定点整数,反码表示的定义是:X 2X 2n n X0 X0 X X反反=(2 (2n+1n+1-1)+X 0X-2-1)+X 0X-2n n 同样同样n n取取7 7,即字长,即字长8 8位,那么位,那么 X X取值范围:取值范围:-127-127+127+127 +0+0反反=00000000=00000000 -0-0反反=11111111=11111111 补码表示法补码表示法 对于定点整数,补码表示的定义是:对于定点整数,补码表示的定义是:X 2X 2n n X0 X0 X X补补=2
11、2n+1n+1+X=2+X=2n+1n+1-X 0X-2-X 0X-2n n 同样如果同样如果n n取取7 7,即字长,即字长8 8位,那么位,那么 X X取值范围:取值范围:-128-128+127+127 +0+0补补=-0=-0补补=00000000=00000000 -10000000-10000000补补=10000000=10000000 XX补补 补补=X=X,对已知的一个补码通过再,对已知的一个补码通过再一次求其补,便可还原出真值。一次求其补,便可还原出真值。例例:若字长若字长8 8位,位,X=126X=126,Y=-126,Y=-126,求求 XX原原、XX反反 、XX补补和
12、和YY原原、YY反反、YY补补。解:解:XX原原=X=X反反=X=X补补=01111110=01111110 Y Y原原=11111110=11111110 Y Y反反=10000001=10000001 Y Y补补=10000010=10000010补码的加减法运算及溢出的判断补码的加减法运算及溢出的判断 (1)(1)补码加法运算补码加法运算 规则:规则:XX补补+Y+Y补补 =X+Y=X+Y补补 条件:条件:X X、Y Y以及以及X+YX+Y在定义域内在定义域内 特点:特点:符号位参与运算;以符号位参与运算;以2 2n+1n+1为模进行为模进行加法,最高位相加产生的进位自然丢掉加法,最高位
13、相加产生的进位自然丢掉 根据运算后结果的符号位,对结果求补,即根据运算后结果的符号位,对结果求补,即X+YX+Y补补 补补=X+Y=X+Y,便可还原出真值。,便可还原出真值。在下面所有例子的运算过程中,假定字长均是在下面所有例子的运算过程中,假定字长均是8 8位位例例:X=+00001111:X=+00001111,Y=+01000000Y=+01000000,求,求X+YX+Y解:解:XX补补=00001111 Y=00001111 Y补补=01000000=01000000 00001111 00001111 +01000000 +01000000 01001111=X+Y 0100111
14、1=X+Y补补=X+Y=X+Y,结果正确。,结果正确。例例:X=-00001111:X=-00001111,Y=01000000Y=01000000,求,求X+YX+Y解:解:XX补补=11110001 y=11110001 y补补=01000000=01000000 11110001 11110001 +01000000 +01000000 1 00110001=X+Y 1 00110001=X+Y补补=X+Y=X+Y,结果正确。,结果正确。补码减法运算补码减法运算 由于由于X-Y=X+(-Y)X-Y=X+(-Y),所以补码减法运算仍可用加,所以补码减法运算仍可用加法运算电路来完成,即法运算
15、电路来完成,即XX补补+-Y+-Y补补=X-Y=X-Y补补,同样,同样通过通过 X-YX-Y补补 补补=X-Y=X-Y,可以还原出真值。条件是,可以还原出真值。条件是X X、-X-X、X-YX-Y必须在定义域内。必须在定义域内。例例:X=01000000 Y=00001111:X=01000000 Y=00001111,求,求X-YX-Y解:解:XX补补=01000000 -Y=01000000 -Y补补=11110001=11110001 01000000 01000000 +11110001 +11110001 1 00110001=X-Y 1 00110001=X-Y补补=X-Y=X-Y
16、,结果正确。,结果正确。溢出的判断溢出的判断 若参与操作的两数在定义域内,但运算结果若参与操作的两数在定义域内,但运算结果超出了字长范围内补码所能允许表示的值,超出了字长范围内补码所能允许表示的值,所计算出的结果产生了错误,称之为溢出所计算出的结果产生了错误,称之为溢出 例如字长例如字长8 8位,补码表示数的范围是:位,补码表示数的范围是:-128x+127-128x+127,若字长,若字长n n位,补码所能表示位,补码所能表示数的范围是数的范围是-2-2n-1n-1x2x2n-1n-1-1-1,当运算结果超,当运算结果超出这个范围时,便产生溢出,两个正数相加出这个范围时,便产生溢出,两个正数
17、相加可能产生正的溢出,两个负数相加可能会产可能产生正的溢出,两个负数相加可能会产生负的溢出,正负两数相加不会产生溢出。生负的溢出,正负两数相加不会产生溢出。例例:C C7 7C C6 6 0 1 0 0 0 0 0 0 +64 0 1 0 0 0 0 0 0 +64 +0 1 0 0 0 0 0 1 +65+0 1 0 0 0 0 0 1 +65 1 0 0 0 0 0 0 1 +129+127 1 0 0 0 0 0 0 1 +129+127,结果错误,产生了溢出结果错误,产生了溢出 两个正数相加,结果为负数形式,这是两个正数相加,结果为负数形式,这是由于由于+129+127+129+127
18、的原因,从上式可看出:的原因,从上式可看出:C C6 6=1=1,C C7 7=0=0,OF=COF=C6 6CC7 7=10=1=10=1,溢出标志,溢出标志OF=1OF=1,表示有溢出。,表示有溢出。例例:计算计算-128-1-128-1 C C7 7C C6 6 -128 -128补补 =1 0 0 0 0 0 0 0 =1 0 0 0 0 0 0 0 +-1+-1补补 =1 1 1 1 1 1 1 1 =1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 两个负数相加,结果为正数形式,这两个负数相加,结果为正数形式,这是由于是由于-1
19、28-1=-129-128-128-1=-129-128的原因,从上式的原因,从上式可看出可看出C C6 6=0=0,C C7 7=1=1,OF=COF=C6 6CC7 7=01=1=01=1,表,表示有溢出。示有溢出。例例:计算计算64-164-1 C C7 7C C6 6 +64 +64补补=0 1 0 0 0 0 0 0 =0 1 0 0 0 0 0 0 +-1+-1补补=1 1 1 1 1 1 1 1 =1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 运算结果正确。运算结果正确。C C7 7=1=1,C C6 6=1=1,则,则O
20、F=COF=C6 6CC7 7=1=11=01=0,无溢出。,无溢出。定点整数定点整数 2.定点数和浮点数表示S小数点无符号位S小数点 定点小数定点小数 定点数 在计算机中,约定数据小数点的位置固在计算机中,约定数据小数点的位置固定在某一位,原理上讲,小数点的位置固定定在某一位,原理上讲,小数点的位置固定在哪一位都行,但是,通常有两种定点格式,在哪一位都行,但是,通常有两种定点格式,一是将小数点固定在数的最左边(即纯小一是将小数点固定在数的最左边(即纯小数),二是固定在数的最右边(即纯整数)。数),二是固定在数的最右边(即纯整数)。(1).定点数的表示法定点数的表示法 例如,用宽度为例如,用宽
21、度为n+1n+1位的字来表示定点数位的字来表示定点数X X,其中其中X X0 0表示数的符号,例如表示数的符号,例如1 1代表负数,代表负数,0 0代表正代表正数,其余位代表它的数位,对于任意定点数数,其余位代表它的数位,对于任意定点数X=XX=X0 0X X1 1X X2 2XXn n,在定点计算机中可表示为:,在定点计算机中可表示为:如果如果X X为纯小数,小数点固定在为纯小数,小数点固定在X X0 0与与X X1 1之间,之间,数数X X的表示范围为:的表示范围为:0|X|1-20|X|1-2-n-n 如果如果X X为纯整数,小数点固定在为纯整数,小数点固定在X Xn n的右边,的右边,
22、数数X X的表示范围为:的表示范围为:0|X|20|X|2n n-1-1 (2).浮点数的表示法(浮点数的表示法(1)任意一个十进制数任意一个十进制数N可以写成可以写成 N=10=10EM (1-31-3)任意一个二进制数任意一个二进制数N可以写成可以写成 N=2=2em (1-41-4)例如,例如,N=101.1101=2=101.1101=2001100110.10111010.1011101同样,在计算机中同样,在计算机中一个任意进制数一个任意进制数N可以写成:可以写成:N=ReM 其中,其中,m m为浮点数的尾数,是一个纯小为浮点数的尾数,是一个纯小数,数,e e是比例因子的指数,称为
23、浮点数的指是比例因子的指数,称为浮点数的指数,是一个纯整数,比例因子的基数数,是一个纯整数,比例因子的基数R R是一是一个常数,一般个常数,一般R R取值为取值为2 2,也有取值为,也有取值为8 8、1616两种情况。两种情况。(2).浮点数的表示法(浮点数的表示法(2)在计算机中存放一个完整的浮点数,应该包括在计算机中存放一个完整的浮点数,应该包括阶码、阶符、尾数以及尾数的符号(数符)共阶码、阶符、尾数以及尾数的符号(数符)共4 4部分,部分,即:即:E ES SE E1 1E E2 2EEm mM MS SM M1 1M M2 2MMn n阶符阶符阶码阶码数符数符尾数尾数一般按照一般按照I
24、EEE 754IEEE 754标准,采用标准,采用3232位浮点数和位浮点数和6464位浮点数位浮点数浮点数110.011(B)=1.100112+10=11001.12+10=0.1100112+11阶码阶码数符数符阶符阶符尾数尾数1100110011N=数符数符尾数尾数2阶符阶符阶码阶码尾数的尾数的位数决定位数决定数的精度数的精度阶码的阶码的位数决定位数决定数的范围数的范围 定点整数定点整数定点小数定点小数规格化的形式:尾数的绝对值大于等于0.1并且小于1,从而唯一地规定了小数点的位置。3232位浮点数标准格式如下:位浮点数标准格式如下:IEEE 754 32IEEE 754 32位浮点数
25、标准格式位浮点数标准格式 在在3232位浮点数中,约定基数位浮点数中,约定基数R=2R=2,S S是尾数的是尾数的符号位,即浮点数的符号位,即浮点数的符号位符号位,它占一位,安排在,它占一位,安排在最高位,最高位,0 0表示正数,表示正数,1 1表示负数,表示负数,尾数尾数M M占占2323位,位,放在低位部分,当然是纯小数。放在低位部分,当然是纯小数。E E是是阶码阶码,占,占8 8位,位,阶码采用了移码方法来表示阶码采用了移码方法来表示,将阶码上移,将阶码上移127127,即,即E=e+127E=e+127。(2).浮点数的表示法(浮点数的表示法(3)例例:假设数假设数N=2N=20110
26、110.10111010.1011101,求,求规格化规格化IEEE 754IEEE 754标标准准3232位浮点数的表示法。位浮点数的表示法。解:数解:数N=2N=20110110.10111010.1011101 =2=200000011000000110.101110100000000000000000.10111010000000000000000 =2=200000010000000101.011101000000000000000001.01110100000000000000000 于是求得数于是求得数N N的的3232位浮点数格式:位浮点数格式:S S仍为仍为0 0,E=e+1
27、27=00000010+01111111=10000001E=e+127=00000010+01111111=10000001,E E值减少一个。值减少一个。M=01110100000000000000000 M=01110100000000000000000,M M值左值左移一位。移一位。根据规格化根据规格化3232位浮点数的表示形式求数位浮点数的表示形式求数N N的真值为:的真值为:N=(-1)N=(-1)S S(1.M)(1.M)2 2E-127E-127 (2).浮点数的表示法(浮点数的表示法(4)6464位浮点数格式位浮点数格式 它与它与3232位浮点数的组成原理相同,约定基数位浮点
28、数的组成原理相同,约定基数R=2R=2,尾数符号位,尾数符号位S S占一位,置于最高位,规格化占一位,置于最高位,规格化的尾数的尾数M M占占5252位,最左边一位位,最左边一位1 1已被隐藏,阶码已被隐藏,阶码e e上移上移10231023,即,即E=e+1023E=e+1023,移码形式的阶码占共计,移码形式的阶码占共计1111位。位。反过来,已知一个规格化的反过来,已知一个规格化的6464位浮点数,求位浮点数,求浮点数浮点数N N的真值可表示为:的真值可表示为:N=(-1)N=(-1)S S(1.M)(1.M)2 2E-1023 E-1023 3.2.2 字符 西文字符 ACSII码码(
29、American Standard Code for Information Interchange)128个常用字符,个常用字符,用用7位二进制编码位二进制编码,从,从0到到127 控制字符:控制字符:032,127;普通字符:;普通字符:94个。个。例如:例如:“a”字符的编码为字符的编码为1100001,对应的十进制数是,对应的十进制数是97;换行换行 0AH 10 回车回车 0DH 13 空格空格 20H 32 09 30H39H 4857 AZ 41H5AH 6590 az 61H7AH 97122汉字编码(1)汉字输入码汉字输入码音码类音码类 全拼、双拼、微软拼音、全拼、双拼、微软
30、拼音、自然码和智能自然码和智能ABC等等 形码类形码类 五笔字型法、郑码输入法等五笔字型法、郑码输入法等。(2)汉字国标码汉字国标码(GB231280)每个汉字占两个字节。每个汉字占两个字节。一级汉字:一级汉字:3755个;二级汉字:个;二级汉字:3008个。个。汉字分区,每个区汉字分区,每个区94个汉字。个汉字。(3)机内码机内码汉字在设备或信息处理系统内部最基本的表达形式。汉字在设备或信息处理系统内部最基本的表达形式。汉字汉字 国标码国标码 汉字内码汉字内码 中中 8680(01010110 01010000)B (11010110 11010000)B 华华 5942(00111011
31、00101010)B (10111011 10101010)B 区号区号区中位置区中位置(4)汉字字形码汉字字形码点阵:点阵:汉字字形点阵的代码汉字字形点阵的代码 有有1616、2424、3232、4848等等编码、存储方式简单、无需转换直接输出编码、存储方式简单、无需转换直接输出放大后产生的效果差放大后产生的效果差矢量:矢量:存储的是描述汉字字形的轮廓特征存储的是描述汉字字形的轮廓特征 矢量方式特点正好与点阵相反矢量方式特点正好与点阵相反(5 5)汉字地址码)汉字地址码每个汉字字形码在汉字字库中的相对位移地址每个汉字字形码在汉字字库中的相对位移地址地址码和机内码要有简明的对应转换关系地址码和
32、机内码要有简明的对应转换关系组组平面平面行行 字位字位最高位为0基本多文种平面(基本多文种平面(BMP):):0组组0平面,包含字母、音节及表意文平面,包含字母、音节及表意文字等。字等。例如:例如:A 41H(ASCII)00000041H(UCS)大大 3473H(GB2312)00005927H(UCS)(6)其他汉字编码其他汉字编码UCS码、码、Unicode码、码、GBK码、码、BIG5码等码等 国际标准:国际标准:通用多八位编码字符集通用多八位编码字符集UCS(Universal Code Set)世界各种文字世界各种文字的统一的编码方案,一个字符占的统一的编码方案,一个字符占4个字
33、节。分为:个字节。分为:其他汉字编码 Unicode码码 另一国际标准:采用双字节编码统一地表示世界上的主要文字。另一国际标准:采用双字节编码统一地表示世界上的主要文字。其字符集内容与其字符集内容与UCSUCS的的BMPBMP相同。相同。GBK GBK码码 GBKGBK等同于等同于UCSUCS的新的中文编码扩展国家标准,的新的中文编码扩展国家标准,2 2字节表示一个汉字字节表示一个汉字 第一字节从第一字节从81HFEH81HFEH,最高位为,最高位为1 1;第二字节从第二字节从40HFEH40HFEH,第二字节的最高位不一定是,第二字节的最高位不一定是1 1。BIG5 BIG5编码编码 台湾、香港地区普遍使用的一种繁体汉字的编码标准,包括台湾、香港地区普遍使用的一种繁体汉字的编码标准,包括440440个个符号,一级汉字符号,一级汉字5 4015 401个、二级汉字个、二级汉字7 6527 652个,共计个,共计13 06013 060个汉字。个汉字。