计算机组成原理计算机组成原理PiilfCtOitiPiilfCtOitiPrincipleofComputerOrganizationPrincipleofComputerOrganization¾第二章运算方法与运算器第章算算第一部分第一部分北京邮电大学志北京邮电大学计算机学院戴志涛12009-3-2计算机学院本章内容¾数据的表示方法及其机器存储¾算术运算和逻辑运算的运算方法(算法)(算法)¾运算器的组成(实现)¾运算器的组成(实现)22009-3-2计算机学院数据的表示方法¾数据数值数据数值数据定点格式:数值范围有限,处理简单浮点格式数值范围很大处理比较复杂浮点格式:数值范围很大,处理比较复杂符号数据ASCII码汉字¾选择数据的表示方式需要考虑的因素要表示的数的类型可能需要的数值范围数值精度数值精度数据存储和处理所需要的硬件代价42009-3-2计算机学院定点数(fixed-pointnumber)的表示方法¾定点表示:机器在运算过程中,数据的小数变点位置固定不变¾通常在设计机器时即指定好小数点的位置¾通常在设计机器时即指定好小数点的位置¾原则上,小数点可指定在任何位置原则小数点可指定在任何位置将小数点固定在最左边:数据表示成纯小数纯小数将小数点固定在最右边数据表示成纯整数纯整数将小数点固定在最右边:数据表示成纯整数纯整数¾为表示统一,符号也用数值表示52009-3-2计算机学院定点数的表示方法¾设带符号数用n比特表示数值,1比特表示符号则定点数在定点机中表号,则定点数x=x1x2…xn在定点机中表示为示为xxxxxxxxxx00xx11xx22……xxnn--11xxnn尾数(mantissa)符号xx00¾纯小数:小数点位于x0和x1之间尾数(mantissa)符号¾纯小数:小数点位于x0和x1之间¾纯整数:小数点位于最低位xn的右边62009-3-2计算机学院定点数的表示范围¾当n固定、且小数点的位置也固定时,定点数数可表示的数的范围是固定的¾定点纯小数|x|=0xxx¾定点纯小数|x|=0.x1x2…xn0≤|x|≤1-2-n(0.11……1+0.0……01=1)¾定点纯整数|x|=x1x2…xn0||21(||+12)0≤|x|≤2n-1(|x|+1=2n)xx00xx11xx22……xxnn--11xxnnxx00尾数(mantissa)符号72009-3-2计算机学院定点数的表示方法¾优点:表示方法简单,便于运算¾缺点:表示的数的范围有限,要表示很大或很小的数必须用很多比特大或很小的数必须用很多比特¾大数量级数据的表示¾大数量级数据的表示定点计算机间接表示:在运算之前先按照定点计算机间接表示:在运算之前先按照一定的固定比例(比例因子)缩放,在运算之后再恢复算之后再恢复用幂的方式运算用幂的方式运算82009-3-2计算机学院浮点数(floating-pointnumber)的表示方法¾浮点表示法:把有效数字和数的范围在计算机的不同存储单元中分别存储小数点位置随比例因子的不同而在一定范围内自由浮动¾科学计数法:N=10E×M¾科学计数法:N10×MM:表示N的有效值的定点数E表示小数点位置的定点数E:表示小数点位置的定点数¾计算机中,一个任意进制数N:N=m×Re任意一个二进制数N,总可以表示成2e×m形式,且总能使m为纯小数,e为纯整数92009-3-2计算机学院浮点数的表示方法¾任意进制数N:N=m×Rem:浮点数的尾数(纯小数)e(exponont):阶,比例因子的指数,称为浮点数的指数(整数)称为浮点数的指数(整数)R:比例因子的基数(常数),在二进制机器中通常规定R为2、8或16102009-3-2计算机学院机器浮点数的组成¾一个机器浮点数由阶和尾数组成尾数:用定点小数或定点整数表示,给出了有效数字,决定了浮点数的表示精度数字,决定了浮点数的表示精度阶:用整数形式表示,指明小数点在数据中的位置决定了浮点数的表示范围置,决定了浮点数的表示范围EESSEE11EE22…E…EmmMM11MM22…M…MnnMMSS阶码阶码阶符阶符数符数符//尾符尾符尾码尾码阶阶尾数尾数112009-3-2计算机学院十进制数串的表示方法¾字符串形式(非压缩型):一个字节存放一个十进制的数位或符号位例:1234“1”“2”“3”“4”例:12341234优点:与ASCII码兼容¾压缩的十进制数串形式:个字节存放两个十进制的数位一个字节存放两个十进制的数位每个数值位数占用半个字节:BCD码符号位占半个字节:用四位编码中的六种冗余值122009-3-2计算机学院压缩十进制数串表示实例¾规定符号位存放在最低数字位之后符号位存放在最低数字位之后12(c)表示正号,13(d)表示负号表示正号表示负号数值位数与符号位数之和必须为偶数¾例:+123+123--1212例:123C012D00010010001111000000000100101101既节省存储空间又便于直接完成十进制数的算既节省存储空间,又便于直接完成十进制数的算术运算132009-3-2计算机学院数的机器码表示¾数据表示:数值和符号均数值化¾数据运算:将符号位当作数值位统一参加运算算¾在计算机中通常将数的符号位和数值位一起在计算机中通常将数的符号位和数值位起编码真值日常使用的用正负号加绝对值表示数大小真值:日常使用的用正负号加绝对值表示数大小的原值机器码(机器数):在计算机中使用和表示数的形式形式真值通过编码转换为机器码存放和参加运算152009-3-2计算机学院常用的定点数机器码:原码、补码、反码、移码原码表示法¾逻辑定义:在数值前面增加一个符号位,该位为0表示正数,该位为1表示负数举例¾举例x=+0.100101001[x]原=0.1001[x]11001x=-0.1001[x]原=1.1001162009-3-2计算机学院原码数学定义¾定点小数⎧≥01定义⎩⎨⎧−≥≥+=−100111][xx|x|xxx=原零:[+0]=00000[-0]=10000⎩−≥+=1011x|x|x零:[+0]原=0.000...0[-0]原=1.000...0¾定点整数⎧≥nx02¾定点整数定义⎩⎨⎧−≥≥+=−nnnnxx|x|xxx200222][=原零:[+0]原=0000...0[-0]原=1000...0⎩≥+x|x|x2022零:[+0]原0000...0[0]原1000...0172009-3-2计算机学院原码表示的特点¾优点:简单直观便于在真值和机器数之间转换¾缺点:加减法运算复杂182009-3-2计算机学院补码(complement)表示法¾引入补码的目的:使加减操作统一,正负数表示和运算统运算统一¾补码的概念与取模运算(modulus)补码的概与取模算将时针退将时针退33格格--33将时针进将时针进99格格++99--33=+=+99((mod12mod12))7733==77++99((mod12mod12))192009-3-2计算机学院77--33==77++99((mod12mod12))补码数学定义¾定点整数定义)(12d02][+⎨⎧≥nnxx)(-+=补1112mod2022][+++⎩⎨−≥=nnnnx|x|xx正数的补码的范围是[0,2n)负数的补码的范围是[2n2n+1-1]负数的补码的范围是[2n,2n+1-1]举例x=+0111001x=-0111001[x]补=00111001x0111001[x]补=100000000+x=100000000-0111001=11000111202009-3-2计算机学院补码数学定义¾定点小数11111111111111定义⎧1.1111……111.1111……11)(-+=补2mod100122][⎩⎨⎧−≥≥=xx|x|xxx0的补码表示只有一种形式+1022⎩≥x|x|x补示只有种式举例x=+0.1011x=-01011[x]补=0.1011x=0.1011[x]补=10+x=10-1.1011=1.0101212009-3-2计算机学院反码表示法¾逻辑定义:正数的反码为其本身负数的反码等于把其相反数的各个二进制位取反负数的反码等于把其相反数的各个二进制位取反¾实例+01011011[]01011011x=+0.1011011x=-0.1011011[x]反=0.1011011[x]反=1.0100100[]反222009-3-2计算机学院反码的数学定义¾正数x=+0.x1x2…xn,则正数12n则[x]反=0.x1x2…xn=x¾负数x=-0.x1x2…xn,则[]1xxxx=L¾当x0时,12[]1.nxxxx=反反1212[]||1.0.1.11122nnnxxxxxxxx−+=+==−LLL于是反[]22||nxx−=−−232009-3-2计算机学院反码的数学定义¾定点小数01[]1022||nxxx−≤⎧=⎨≤⎩反定义1022||nxx−≤−−⎩反零:[+0]反=0.00...0[-0]反=1.11...1¾定点整数定义02[]nxx⎧≤⎨定义1[]2120nxxx=⎨−−≤⎩反n+()+零:[+0]反=000...0[-0]反=111...1242009-3-2计算机学院反码与补码的关系¾比较反码与补码的定义:当x0时以纯小数为例[x]反=(2-2-n)+x[x]=2+x[x]补=2+x可得到[x]补=[x]反+2-n得到[]补[]反也即:同一个负数的补码和反码只在最后个比特上差1后一个比特上差1252009-3-2计算机学院通过反码求补码¾求一个负数的补码:只要先求得其反码,再在最后一位加上1即得补码补码即:符号位置1,其余各位按位取反,然后在最末位上加1(纯小数2n)最末位上加1(纯小数:2-n)例:已知X=-0.1011,求[X]补解:[X]反=1.0100[X]反1.0100[X]补=1.0101262009-3-2计算机学院已知原码求补码¾正数[X]补=[X]原负数¾负数保持原码的符号位不变,其余各位按位取反,末保持原码的符号位不变,其余各位按位取反,末位加1或最右边一个非零位及其以右位不变以左或:最右边一个非零位及其以右位不变,以左各位取反例例:(X=-0.10110010)[X]=110110010[X]原=1.10110010[X]补=1.01001101+0.00000001补=1.01001110272009-3-2计算机学院已知补码求原码¾正数[X]原=[X]补原补¾负数[X]原=[[X]补]补保持补码的符号位不变,其余各位按位取反末位加1按位取反,末位加1例:[X]补=101001110例:[X]补=1.01001110[X]原=1.10110001[X]原1.10110001+0.00000001=1.10110010282009-3-2计算机学院已知[X]补求[-X]补¾[X]补连同符号位一起,各位按位取反,补末位加1例[X]101001110例:[X]补=1.01001110[-X]=010110010[X]补=0.10110010292009-3-2计算机学院机器码右移位¾原则:移位时应保持移位前后机器码的对应关系与真值移位相同的对应关系与真值移位相同:每右移一位真值减为1/2每右移位,真值减为1/2¾原码:符号位固定在最高位,左边空原码符号位固定在最高位出的数值位补0¾补码和反码符号位固定在最高位¾补码和反码:符号位固定在最高位,左边空出的数值位补符号位左边空出的数值位补符号位例:[X]补=1.01001110=[X/2]补=1.10100111302009-3-2计算机学院移码(增码)表示法¾通常用于表示浮点数的阶¾为简化操作,使所有阶码均为正数,对所有阶均加上个固定的常数偏置所有阶均加上一个固定的正常数(偏置常数)常数)通常选择偏置