资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第二章 数据的机器表示,主要内容:,真值、机器数的概念,原码、补码、反码、真值,及其相互转换。,定点数与浮点数的表示范围。,字符编码与汉字编码。,1,A、,数据的分类,数据表示的分类:,数值数据表示,无符号数,带符号数,原码、补码、反码、移码,定点、浮点,非数值数据表示,字符数据和字符串,汉字数据,十进制数和数串(自学),2,B、,数值型数据的表示方法,一个预备知识,二进制数B、八进制数Q,十进制数D(可省略)、十六进制数H,两个术语定义,真值:在现实生活中,用正号、负号加绝对值表示数值的数称为真值,如123、-128等。,机器数:在计算机内部使用的、连同符号一起数码化了的数,称为机器数。,要做三件事,区分数据的正负、选择数值的码制、确定小数点的位置。,3,一、带符号数的表示方法,带符号机器数主要有3种编码方式:,原码,补码,反码,带符号数最常用的编码方式有2种:,原码,补码,4,1、原码表示,原码表示法规定:一个机器字中,最高位为符号位,符号位为0表示正数,符号位为1表示负数,数值部分与真值相同。,若定点小数的原码形式为 x,0.,x,1,x,2,x,n,,则原码表示的定义:,X,原,=,其中,X,原,是机器数,X是真值。,例如,x=+0.1001,则x,原,=,0,.1001,x=-0.1001,则x,原,=,1,.1001,对于正数x=+0.x,1,x,2,x,n,,x,原,=,0,.x,1,x,2,x,n,对于负数x=-0.x,1,x,2,x,n,,x,原,=,1,.x,1,x,2,x,n,对于0,有两种形式:+0,原,=,0.,000,-0,原,=,1.,000,X 0 X1,1 X=1+|X|-1X0,8位,机器字,5,原码表示(续),若定点整数的原码形式为,x,n,x,2,x,1,x,0,,,定点整数的原码定义:,x,原,=,例如,x=+1011,则x,原,=,0,0001011,x=-1011,则x,原,=,1,0001011,关于原码表示的结论:,真值0有两种不同的表示形式(+0、-0),小数原码表示范围为:-1x1,整数原码表示范围为:-2,n,x2,n,原码表示简单易懂,其缺点是加法运算复杂。因为人为约定0为正数,1为负数,在运算时,符号和数值要分开处理。,X 0 X2,n,2,n,X=2,n,+|X|-2,n,X0,8位,机器字,6,2、补码表示,补码符号位的表示方法与原码相同,数值部分的表示如下:对于正数,数值部分与真值的形式相同;对于负数,将真值的数值部分按位求反,最低位加,1,。,若定点小数的补码形式为,x,0,.x,1,x,2,x,n,,则补码的定义:,X,补,=,其中,X,补,是机器数,X是真值。,X 0 X1,2+X=2-|X|,-1,X 0,例如,x=+0.1011,则x,补,=,0,.1011,x=-0.1011,则x,补,=,1,.0101,对于正数x=+0.x,1,x,2,x,n,,x,补,=0.x,1,x,2,x,n,对于负数x=-0.x,1,x,2,x,n,,x,补,=10.00-0.x,1,x,2,x,n,对于0,只有一种形式+0,补,=-0,补,=0.000,8位,机器字,7,补码表示(续),若定点整数的补码形式为,x,n,x,2,x,1,x,0,,,定点整数的补码定义:,x,补,=,例如,x=+1011,则x,补,=,0,0001011,x=-1011,则x,补,=,1,1110101,X 0 X2,n,2,n+1,+X=2,n+1,-|X|-,2,n,X 0,(m,od 2,n+1,),由真值转换为补码时,很少用补码定义式计算,通常把真值先转换为原码,再由原码转换为补码。事实上,按照对补码定义式的理解,有如下简便的转换方法。,8位,机器字,8,由真值、原码转换为补码,正数的补码表示与原码相同。,如:x,原,=0.1010,x,补,=0.1010,负数原码转换为补码的方法之一:符号位保持1不变,数值位按位求反,末位加1。,如:x,原,=1.1010,按位求反 1.0101,末位加1 +1,x,补,=1.0110,负数原码转换为补码的方法之二:,符号位保持1不变,在数值位中从低位向高位找1,第一个1及其右边的0保持不变,数值位的其余部分求反。,如:x,原,=,1.,10,10,不变 求反 不变,x,补,=1.01 10,以上方法与通过补码定义式计算结果完全一致,但更为简便,是实现求补电路的重要依据,也是实现求补电路普遍采用的方法。,9,由补码表示转换为原码与真值,正数补码与原码相同,不需要转换。,负数补码转换为原码,可以采用上述方法,对补码再求补码,实现逆转换,即对补码再求补码结果为原码。,关于补码表示的结论:,在补码表示中,仍以最高位作为符号位,0为正数、1为负数。补码的符号位是数值的一部分,可以和数值位一起参与运算,不需要单独处理。,数值0只有一种表示,无+0和-0之分,补码的负数域不含0。,负数补码和原码相比,多出了一个负数-1或-2,n,。以n+1位整数为例,原码绝对值最大的负数为-(2,n,-1),而补码绝对值最大的负数为-2,n,,其原因是在补码中0只占一个码点。,补码表示可以把减法转化为加法,用一套电路完成加法和减法.,10,3、反码表示,反码符号位的表示方法与原码相同,数值部分表示如下:对于正数,数值部分与真值的形式相同;对于负数,将真值的数值部分按位求反。,若纯小数的反码序列为,x,0,.x,1,x,2,x,n,,则,:(,n,为数值的位数,),x,反,=,例如,,x=+0.1101,,,x,反,=0.1101,x=-0.1101,,,x,反,=1.0010,X 0 X1,(2,2,-n,)+X -1 X 0,11,反码表示(续),对于正数 x=+0.x,1,x,2,x,n,,x,反,=,0,.x,1,x,2,x,n,对于负数 x=-0.x,1,x,2,x,n,,x,反,=,1,.x,1,x,2,x,n,对于0,有两种形式:+0,反,=0.000,-0,反,=1.111,若定点整数的补码形式为x,n,x,2,x,1,x,0,,定点整数的补码定义:,x,反,=,x,反,=2-2,-n,+x,x,补,=2+x x,补,=x,反,+2,-n,有以下结论:反码的末位加1等于对应的补码。,反码的符号位也可以作为数值位直接参与运算。,X 0 X2,n,(2,n+1,1)+X -2,n,X 0,12,二、数的定点表示与浮点表示,在现实世界中,我们所遇到的数可能既有整数部分,又有小数部分,这就存在一个如何表示小数点的问题,即如何确定小数点的位置。,根据小数点的位置是否固定,数的格式可分为:,定点表示,浮点表示,其中,定点数又分为无符号定点数、带符号定点数。,对于数据表示,我们最关心两项指标:,第一,表示范围,即在正负两个方向上各能表示多大的数,第二,分辨率,也就是表示数的精细程度,13,1、定点表示法,无符号定点数,所谓,无符号数定点数,,是指整个机器字的二进制位全部用来表示数值位,没有符号位置;同时约定小数点在最低数位之后,而且不出现在数码序列中。,例、N,1,=01001,表示9;N,2,=11001,表示25。,字长为n+1位的无符号数x,n,x,2,x,1,x,0,有以下特性:,典型值,真值,代码序列,最大值,2,n+1,-1,1111,最小非零正数,1,0001,最小值,0,0000,无符号定点数值的表示范围为,:02,n+1,-1,分辨率为1。,14,无符号定点数,例、以8位无符号数为例,说明其最大值为(2,8,-1)。,其它典型值,最小非零正数和零,可进行同样的分析。,15,2、定点表示法,带符号定点整数,带符号定点整数,是纯整数,,它约定机器字的,最高位为符号位,小数点在最低数位之后、且不出现在数码序列中,带符号定点整数可以是原码表示或补码表示。,格式为:,以下分原码和补码进行讨论。,x,n,x,n-1,x,n-2,x,2,x,1,x,0,符号位,数值位,小数点,16,假设:带符号的定点整数代码序列为,x,n,x,2,x,1,x,0,,约定,x,n,为符号位,小数点在最低位之后。其典型值如下:,典型值,真值,代码序列,原码,绝对值最大负数,-(2,n,-1),1111,绝对值最小负数,-1,1001,最小非零正数,+1,00.01,最大正数,2,n,-1,0111,补码,绝对值最大负数,-2,n,1000,绝对值最小负数,-1,1111,最小非零正数,+1,0001,最大正数,2,n,-1,0111,17,现以8位原码为例,说明带符号定点整数的绝对值最大负数-(2,7,-1)、最大正数(2,7,-1)。,得到结论:(,注意,序列下标和权值的指数一致,),原码定点整数表示范围:-(2,n,-1)(2,n,-1),补码定点整数表示范围:-2,n,(2,n,-1),原码、补码定点整数分辨率:1,18,3、定点表示法,带符号定点小数,带符号定点小数,是纯小数,,它约定机器字的,最高位为符号位,小数点在符号位之后、最高数值位之前、且不出现在数码序列中,,带符号定点小数可以是原码表示或补码表示。,格式:,以下分原码和补码进行讨论。,x,0,x,1,x,2,x,n-2,x,n-1,x,n,符号位,数值位,小数点,19,假设:带符号的定点小数代码为,x,0,.x,1,x,2,x,n,,约定,x,0,为符号位,小数点在符号位和最高数位之间.其典型值如下:,典型值,真值,代码序列,原码,绝对值最大负数,-(1-2,-n,),1.111,绝对值最小负数,-2,-n,1.001,最小非零正数,+2,-n,0.0.01,最大正数,1-2,-n,0.111,补码,绝对值最大负数,-1,1.000,绝对值最小负数,-2,-n,1.111,最小非零正数,+2,-n,0.001,最大正数,1-2,-n,0.111,20,现以8位原码为例,说明带符号定点小数的绝对值最大负数-(1-2,-7,)、最大正数(1-2,-7,)。,由此得到:(,注意:序列下标和权值的指数一致,),原码定点小数表示范围:-(1-2,-n,)(1-2,-n,),补码定点小数范围:-1(1-2,-n,),原码、补码定点小数分辨率:2,-n,21,4、浮点数的表示方法,把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示,相当于小数点的位置随数的比例因子不同在一定范围内可自由浮动,所以把这种表示方式称为,浮点表示法,。,任意一个二进制数可以写成:,N=2,e,M,M称为浮点数的,尾数,,纯小数表示,基数为2;,e为浮点数的指数,也叫,阶码,,整数表示,底数为2。,浮点数在机器中由阶码和尾数来表示。尾数部分给出浮点数有效数字的数位,决定浮点数的精度;阶码指明小数点在数据中的位置,决定浮点数的表示范围。,22,(1)浮点数的格式,浮点数的表示格式,E,s,E,1,E,2,E,m,M,s,M,1,M,2,M,n,阶符,阶码,数符,尾数,数符决定浮点数的正负;阶符仅决定阶码本身的正负,阶码通常使用移码表示,移码是计算机中又一种机器数的编码方式。下面先介绍移码。,整数,小数,23,(2)移码表示法,移码通常用来表示浮点数的阶码,由真值加一个固定的常数生成,这个固定的常数称为偏移量。,设定点整数移码的形式为,x,m,x,2,x,1,x,0,,,则移码定义为:,x,移,=2,m,+x -2,m,x2,m,x,移,是机器数,x是真值,2,m,是一个固定的偏移量,它也是,x,m,的位权,移码共有m+1位。,例、某浮点数阶码8位,含一位符号位,移码表示。当阶码x=-0111 1111,则:,x,移,=2,7,-0111 1111=0000 0001,24,移码的特点,最高位为0表示负数,为1表示正数。,移码全0时真值最小,全1时真值最大。,0的移码只有一个,0,移,=1000,同一数值的移码和补码,数位相同,而符号相反
展开阅读全文