计算机组成原理2_1.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第二章运算方法和运算器汪志华edgar_wang@sina.com2.1数据与文字的表示方法进制的相互转换(要求非常熟练)真值机器数2.1.1数据格式定点数:操作数数据格式中小数点是固定的,通常将数据表示成纯小数或纯整数定点数x=x0x1x2…xn在定点机中表示如下(x0表示符号位)x0x1x2...xn-1xnx0x1x2...xn-1xn定点小数定点整数小数点小数点纯小数的表示范围为0≤|x|≤1-2-n例如,n=8,最大值编码:0.11111111表示:0.11111111=1.0-0.00000001=1-2-8纯整数的表示范围为0≤|x|≤2n-1例如:n=8,最大值编码:11111111表示:11111111=100000000-1=28-1如何用定点数来表示非常大(e.g.2×10+33)的数和非常小(e.g.9×10-28)的数?浮点表示法:把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示,这种把数的范围和精度分别表示的方法,数的小数点位置随比例因子的不同而在一定范围内自由浮动。一个任意进制数N可以写成N=Re∙MM:尾数,是一个纯小数。e:比例因子的指数,称为浮点数的指数,是一个整数。R:比例因子的基数,对于二进计数值的机器是一个常数,一般规定R为2,8或16。阶码表达指数部分用整数形式表示,指明小数点在数据中的位置决定浮点数的表示范围尾数用定点小数表示,给出有效数字的位数决定了浮点数的表示精度阶符阶码数符尾数早期计算机中浮点数的表示阶符阶码数符尾数现行浮点数的表示IEEE754标准S:浮点数的符号位,1位,0表示正数,1表示负数。M:尾数,23位,用小数表示,小数点放在尾数域的最前面。E:阶码,8位阶符采用隐含方式,即采用移码方式来表示正负指数。将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值127(01111111),即E=e+127SEM32位浮点数313023220对于二进制数1011.1101=0.10111101×2+4=0.01011101×2+5=10.111101×2+2=1.0111101×2+3为提高数据的表示精度,当尾数的值不为0时,尾数域的最高有效位应为1,否则以修改阶码同时左右移小数点的办法,使其变成这一表示形式,这称为浮点数的规格化表示。尾数的最高位为非零数值的浮点数,即:1||21M对于原码表示,xf.x1x2...xn则x1=1对于补码表示,xf.x1x2...xn则xf⊕x1=1IEEE754规格化的浮点数尾数最高有效位为1,并且隐藏在小数点的左边(即:1≤M<2)IEEE754标准中,一个规格化的32位浮点数x的真值可表示为x=(-1)s×(1.M)×2E-127e=E-127IEEE754标准中,一个规格化的64位双精度浮点数规格化表示x=(-1)s×(1.M)×2E-1023e=E-1023(E=e+1023)SEM64位浮点数636252510④X=(-1)s×1.M×2e=+(1.011011)×23=+1011.011=(11.375)10②指数e=阶码-127=10000010-01111111=00000011=(3)10③包括隐藏位1的尾数1.M=1.011011例1:浮点机器数(41360000)16,求真值①十六进制数展开成二进制数01000001001101100000000000000000S阶码E(8位)尾数M(23位)例2:真值20.59375,求32位单精度浮点数①分别将整数和分数部分转换成二进制数20.59375=10100.10011②移动小数点,使其在第1、2位之间10100.10011=1.010010011×24e=4S=0E=4+127=131=10000011M=010010011③得到32位浮点数的二进制存储格式为:01000001101001001100000000000000=(41A4C000)16IEEE754标准32位单精度规格化浮点数E=1(00000001)~254(11111110)e=-126~+127表达的数据范围(绝对值):最小值:e=-126,M=0(1.M=1)十进制表达:2-126≈1.18×10-38最大值:e=127,M=11…1(23个1)1.M=1.11…1(23个1)=2-2-23十进制表达:(2-2-23)×2127≈2×2127≈3.40×1038IEEE754标准64位双精度规格化浮点数E=1~2046e=-1022~+1023表达的数据范围(绝对值):最小值:e=-1022,M=0(1.M=1)十进制表达:2-1022≈2.23×10-308最大值:e=1023,M=11…1(52个1)1.M=1.11…1(52个1)=2-2-52十进制表达:(2-2-52)×21023≈2×21023≈1.79×10308IEEE754标准32位单精度规格化浮点数中一些规定真值0的机器数(机器零)阶码E=0,尾数M=0正0:S=0,负0:S=1非规格化浮点数:阶码E=0,尾数M≠0规格化浮点数:阶码E=1~254(11111110)无穷大的机器数阶码E=全1(11111111),尾数M=0+∞:S=0,-∞:S=1NaN(notanumber,不是一个数)阶码E=全1(11111111),尾数M≠0用来通知异常情况十进制数串的表示方法字符串形式:一个字节存放一个十进制的数位或符号位。压缩的十进制数串形式:一个字节存放两个十进制的数位,符号位占半个字节(例如用C表示正,D表示负)123C012D+123-122.1.2数的机器码表示原码补码反码移码原码表示法定点小数的原码形式为x0.x1x2…xn定点整数的原码形式为x0x1x2…xnX1>X≥0[X]原=1-X=1+|X|0≥X>-1X2n>X≥0[X]原=2n-X=2n+|X|0≥X>-2n例如,x=+0.1001,则[x]原=0.1001x=-0.1001,则[x]原=1.1001对于0,原码机器中往往有“+0”、“-0”之分,故有两种形式:[+0]原=0.000...0[-0]原=1.000...0补码表示法负数用补码表示时,可以把减法转化为加法+4-8定点小数的补码形式为x0.x1x2…xn定点整数的补码形式为x0x1x2…xnX1>X≥0[X]补=2+X=2-|X|0≥X≥-1X2n>X≥0[X]补=2n+1+X=2n+1-|X|0≥X≥-2n(mod2)(mod2n+1)例如:x=+0.1011,则[x]补=0.1011x=-0.1011,则[x]补=10+x=10.0000-0.1011=1.0101对于0,[+0]补=[-0]补=0.0000注意,0的补码表示只有一种形式。补码与真值的关系若[x]补=xnxn-1xn-2...x1x0则1022niiinnxxx反码表示法定点小数的反码形式为x0.x1x2…xn定点整数的反码形式为x0x1x2…xnX1>X≥0[X]反=(2-2-n)+X0≥X>-1X2n>X≥0[X]反=(2n+1-1)+X0≥X>-2n对于正数x=+0.x1x2…xn,则[x]反=0.x1x2…xn对于负数x=-0.x1x2…xn,则[x]反=1.x1x2…xn对于0,有[+0]反和[-0]反之分:[+0]反=0.00...0[-0]反=1.11...1对于负数[x]补=[x]反+2-n若要一个负数变补码,其方法是符号位置1,其余各位0变1,1变0,然后在最末位(2-n)上加1。移码表示法移码通常用于表示浮点数的阶码有符号整数采用移码最高位表示符号:正数用1,负数用0移码的传统定义:[X]移=2n+X2n>X≥-2n思考:对同一个真值,补码与移码只相差一个符号位机器码表示小结补码表示对加减法运算十分方便,因此目前机器中广泛采用补码表示法有些机器用原码进行存储和传送,运算时改用补码有些机器做加减法时用补码,做乘除法时用原码移码表示法主要用于表示浮点数的阶码[例5]设机器字长16位,定点表示,尾数15位,数符1位,问:(1)定点原码整数表示时,最大正数是多少?最小负数是多少?(2)定点原码小数表示时,最大正数是多少?最小负数是多少?(1)最大正数值=(215-1)10=(+32767)10最小负数值=-(215-1)10=(-32767)10(2)最大正数值=(+0.111...11)2=(1-2-15)10最小负数值=(-0.111..11)2=-(1-2-15)1001111111111111111111111111111111[例6]假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格化浮点数x,真值表示为:x=(-1)s×(1.M)×2E-128问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少?(1)最大正数01111111111111111111111111111111x=[1+(1-2-23)]×2127(2)最小正数00000000000000000000000000000000x=1.0×2-128(3)最小负数11111111111111111111111111111111x=-[1+(1-2-23)]×2127(4)最大负数10000000000000000000000000000000x=-1.0×2-1282.1.3字符与字符串的表示方法多字节数据通常也连续存放在主存,占用多个连续的字节存储单元小端方式(LittleEndian)低字节数据存放在低地址存储单元高字节数据存放在高地址存储单元大端方式(BigEndian)低字节数据存放在高地址存储单元高字节数据存放在低地址存储单元假设主存以字节为单位,每个存储单元具有一个存储器地址,其中存放一个字节数据(8位),则16位的数据1234H的存储方式为:小端方式大端方式3412123410001001存储地址2.1.4汉字的表示方法汉字的输入编码数字编码拼音码字形编码汉字内码:汉字机内代码中两个字节的最高位均规定为“1”汉字的输出编码:字模码、矢量字体2.1.5校验码元件故障\噪声干扰等各种因素常常导致计算机在处理信息过程中出现错误。为了防止错误,可将信号采用专门的逻辑线路进行编码以检测错误,甚至校正错误。通常的方法是,在每个字上添加一些校验位,用来确定字中出现错误的位置。最简单且应用广泛的检错码是采用一位校验位的奇校验或偶校验。奇校验:使包括校验位在内的数据中为“1”的个数恒为奇数偶校验:使包括校验位在内的数据中为“1”的个数恒为偶数(包括0)设x=(x0x1…xn-1)是一个n位字,则奇校验位C定义为C=x0⊕x1⊕…⊕xn-1只有当x中包含有奇数个1时,才使C=1,即C=0。偶校验位C定义为C=x0⊕x1⊕…⊕xn-1x中包含偶数个1时,才使C=0。数据1010101001010100000000000111111111111111偶校验码101010100010101001000000000011111111111111110奇校验码101010101010101000000000001011111110111111111

1 / 42
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功