资源预览内容
第1页 / 共202页
第2页 / 共202页
第3页 / 共202页
第4页 / 共202页
第5页 / 共202页
第6页 / 共202页
第7页 / 共202页
第8页 / 共202页
第9页 / 共202页
第10页 / 共202页
亲,该文档总共202页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第二章 运算方法与运算器 运算方法和运算器http:/zcyl.ytu.edu.cn/本章内容:2.1 数据与文字的表示方法2.2 定点加法、减法运算2.3 定点乘法运算2.4 定点除法运算2.5 定点运算器的组成2.6 浮点运算方法和浮点运算器本章小结运算方法和运算器2.1 数据与文字的表示方法 2.1.1 数据格式2.1.2 数的机器码表示2.1.3 字符与字符串的表示方法2.1.4 汉字的表示方法2.1.5 校验码 数据与文字的表示方法2.1.1 数据格式 计算机中常用的数据表示格式有两种: (1)定点格式 (2)浮点格式定点格式(小数点位置 固定)容许的数值范围有 限,但要求的处理硬件比较简单。浮点格式(小数点位置浮动)容许的数值范围很大,但要求的处理硬件比较复杂 。数据格式1. 定点数的表示方法定点表示:约定机器中所有数据的小数点位置是按约 定固定不变的,小数点就不再使用记号“.”来表示。定 点数据的形式:纯小数或纯整数。 (设:定点数表示为012n 其中:0符号位,0代表正号,1代表负号)小数点的位置约定在符号 位x0的后面(不显示)小数点的位置约定在数值 位xn的后面(不显示)定点数的表示方法定点数例例:X=+1010110.纯整数:X = 01010110.正数,符号位取0Y= - 1101001.纯整数:Y = 11101001.负数,符号位取1X=+0.11011Y=-0.10101符号位取0纯小数:X = 0.11011符号位取1纯小数:X = 1.10101纯整数:X = 01010110符号位取0纯整数:Y = 11101001符号位取1符号位取0纯小数:X = 0.11011符号位取1纯小数:X = 1.10101注意到:无论是整数 或是小数, 在机器数的 表示中,都 不出现小数 点“.”,只是 约定其位置 。定点数例(012n 各位均为0时最小;各位均为1时最大)纯小数的表示范围: 0|12n (2.1) 纯整数的表示范围为:0|2n1 (2.2) 目前计算机中多采用定点纯整数表示,因此将定点数表示的运算简称为整数运算。 定点数的表示方法例:156.78 =15.678101= 1.5678102= 0.15678103=MRE 其中:M为尾数;R为基数;E为阶码(指数)。二进制数在定点计算机中,一般约定: 尾数|M| x 01-x =1+ |x| 0 x -1对于定点整数 x =12n,则原码的定义是:对于定点整数,其原码形式为:原=012n, 注意到:原码机器中 “+0”、“-0” 有两种形式:对于定点小数:+0原 =0.0000 -0原 =1.0000对于定点整数:+0原 =00000. -0原 =10000.数的原码表示 2n0 2n2n| 02n (2.8)符号数值一般情况下,对于定点小数,其真值与原码之间的转 换符合下面的规律:x=+0.12n 原0.12nx=-0.12n 原1.12n对于定点整数,其真值与原码之间的转换符合下面的 规律:x=+ 12n 原012n .x=- 12n 原112n .数的原码表示原码表示法的主要特点是简单、易懂,但它的最大缺 点是:由于数值部分采用绝对值表示,因而使得加减法 运算比较复杂,而加减法运算正是计算机中最常使用的 运算。所以,必须探讨解决方法补码则正是一种解 决方法。数的原码表示2.补码表示法 补码的概念(以钟表对时为例)假设现在的标准时间为4点正;而有一只表已经7点了,为 了校准时间,可以采用两种方法:一是将时针退7-4=3 格;一 是将时针向前拨12-3=9格。显然:这两种方法都能对准到4点, 由此可以看出,减3和加9是等价的。所以称:当模数Mod=12时 ,9是(-3)补码。用数学公式表示: -3+9(mod12)“模”表示被丢掉的数值。上式在数学上称为同余式。 设某数为x,当Mod=12时,x-3=x+9、x+7=x-5 都是等价的 。 从这里可以得到一个启示,就是负数用补码表示时,可以把减 法转化为加法。 数的补码表示补码的定义:1、定点小数例如+0.1011,则补0.1011;-0.1011,则补10+10.0000-0.10111.0101正数的补码就是本身负数的补码需作运算数的补码表示x 1 x 02+x=2-|x| 0 x -1 (mod 2)10.0000- 0.10111.0101根据补码定义,求负数的补码时需作一次减法运算,这显然不 是补码方法的初衷。后面将介绍反码表示法可以解决负数的求补 问题。2、定点整数例:已知x=+10111,y=-11011, 求 x补、y补 (n=5)按定义:x补 =010111y补 =25+1+y=1000000-11011=100101数的补码表示x 2n x 02n+1+x= 2n+1 -|x| 0 x -2n(mod 2n+1) 1000000 - 11011100101注:上式机器数的位数为n+1数的补码表示注:0的补码只有一种形式 对于定点小数: 0补0补0.0000 对于定点整数: 0补0补00000 . 因此,补码的表示范围相对于原码、反码来讲多一种,定点小数可以表示-1,n+1位定点整数可以表示-2n。3. 反码表示法二进制数求反:就是二进制的各位数码0变为1,1变为0。 即:若 xi =0,则 =1。若 xi =1,则 =0. 对定点小数,反码的定义参见书(2.11)式。数的反码表示正数的反码就是本身负数的反码则是符号 位为1,数值位求反 。x 1 x 0( 2- 2-n ) +x= ( 2- 2-n )_|x| 0 x -1 (2.11)由式(2.11)可以得出: x反+|x|=1.1111=10.00-0.001= 2- 2-n得出: 反(22n) 0 x -1数的反码表示比较反码与补码的公式 反(22n)补2可得到:补反2n由此可知一个由反码求补码的重要公式,即:一个负数的补码,可以通过将该数 符号位置1,其余取反,然后在最末位(2-n )上加1 的方法直接获得。数的补码与反码关系例:已知x=+0.1011, y=-0.1101, 求 x补、y补按定义:x补 =0.1011(注:正数的补码就是该数本身)y补 =1.0010+0.0001=1.0011y反2-n注意到:1、0的反码不唯一:0反0.000; 0反1.1112、比较反码与补码的公式:反(22n)补2可知:补码与反码的关系为:补反2n数的补码与反码关系上面的公式告诉我们,若要一个负数变补码,其方法是符号位置1,其余各位0变1,1变0,然后在最末位(2-n)上加1。对定点整数,反码表示的定义为:也可以用同样的方法得出定点整数的补码与反码的关系,找出利用反码求定点整数补码的方法。x 2n x 0(2n+1-1)+x 0 x -2n(2.13)数的补码与反码关系求一个数的补码的另一种有效的转换方法 :对于负数,将原码的符号位不变(或置真 值的符号位至1),数值部分由低位向高位转 换,对开始遇到的0和第一个1取其原码,以 后的各位均取反。例: y=-0.110100, 求 y补解:y补=1.001 100保持不变逐位取反y反=1.001011y补=1.001011+0.000001=1.001100 数的补码与反码关系4.移码表示法在计算机中,移码通常用于表示浮点 数的阶码。由于阶码一般取整数,所以 移码通常只用于整数的表示。 对定点整数,移码的定义是:移2n 2n2n (n为移码数值部分的位数)移码的表示方法例:若阶码数值部分为5位,以表示真值,则移25 25 25 又例: 当正数10101 时,移1,10101当负数10101 时,移2525101010,01011。注意到: 移码中的逗号不是小数点,而是表示左边一位是符号位。显然,移码中符号位0表示的规律与原码、补码、反码相反。移码的表示范围和补码一致,0只有一种表示方式,只是符号位正好相反。移码的表示方法机器码表示法小结:在数据的四种机器表示法中,v正数的原码、反码、补码等于真值,只有负数才分别有不同的表示方法。补码和移码的0只有一种表示方法,因此其表示范围相对于原码和反码多一种,定点小数可表示-1(移码没有小数形式),正数可表示-2n。v移码表示法主要用于表示浮点数的阶码,可以直接比较大小。表示范围和补码相同,只有最高位相反。机器码表示法小结v由于补码表示对加减法运算十分方便,因此目前机器中广泛采用补码表示法。在这类机器中数用补码表示,补码存储,补码运算。(也有些机器,数用原码进行存储和传送,运算时改用补码。还有些机器在做加减法时用补码运算,在做乘除法时用原码运算)机器码表示法小结例3 以定点整数为例,用数轴形式说明原码、反码、补码表 示范围和可能的数码组合情况。 解:原码、反码、补码表示分别示于下图。与原码、反码不同,在 补码表示中“0”只有一种形式,且用补码表示负数时范围可到 2n 。机器码表示法小结例4将十进制真值(127,1,0,1,127)列表表示成二进制数及原码、反码、补码、移码值。 解:二进制真值及其诸码值列于下表,其中0在原反中有两种表示。由表中数据可知,补码值与移码值差别仅在于符号位不同。机器码表示法小结例5 设机器字长16位,定点表示,尾数15位,数符1位,问:(1)定点原码整数表示时,最大正数是多少?最小负数是多少?(2)定点原码小数表示时,最大正数是多少?最小负数是多少? 解:(1) 定点原码整数表示 最大正数值 (2151)10(32767)10 =0 111111111111111 最小负数值(2151)10(32767)10 =1 111111111111111 (15个1 )机器码表示法小结(2) 定点原码小数表示最大正数值(1215)10(0.111.11)2 最小负数值(1215) 10(0.11111)2 例6假设由S,E,M三个域组成的一个32位二进制字所表示的 非零规格化浮点数,真值表示为:(1)s(1.M)2E128问:它所表示的规格化的最大正数、最小正数、最大负数、最 小负数是多少?解:(1)最大正数11111111111111111111 111111111110 1(12-23)2127(2)最小正数 00000000000000000000000000000000 1.02128机器码表示法小结(4)最大负数 00000000000000000000000000000000 1.02128 111111111111111
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号