您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 2015-计算机组成原理-第3章-数据表示
计算机组成原理第三章王毅(yiwang@szu.edu.cn)计算机与软件学院数据表示与数据运算•计算机的基本功能是进行数值运算以及对信息进行加工处理。在计算机内部,各种数值和信息都采用了数字化编码,即用最简单的二进制数码来表示。•本讲主要介绍常用的进位计数制、二进制运算、无符号数和带符号数的表示方法、数的定点与浮点表示方法、字符和汉字的编码方法及数据校验码等。•内容:第三章以及第四章的浮点运算部分内容•熟悉和掌握本章的内容是进行运算器设计的基础和学习计算机原理的最基本要求。3.1常用的进位计数制及其相互转换3.1.1二进制简介二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统。我们最常用的10进制,其实起源于人类有10个指头。而计算机中采用二进制的原因是什么呢?计算机内部采用二进制的原因(1)技术实现简单,计算机是由逻辑电路组成,逻辑电路通常只有两个状态,开关的接通与断开,这两种状态正好可以用“1”和“0”表示。(2)简化运算规则:两个二进制数和、积运算组合各有三种,运算规则简单,有利于简化计算机内部结构,提高运算速度。(3)适合逻辑运算:逻辑代数是逻辑运算的理论依据,二进制只有两个数码,正好与逻辑代数中的“真”和“假”相吻合。(4)易于进行转换,二进制与十进制数易于互相转换。(5)用二进制表示数据具有抗干扰能力强八进制和十六进制int类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:00000000000000000000000001100100缺点:二进制数太长了,面对这么长的数进行思考或操作,没有人会喜欢。8、16进制并不是计算机中使用的进制,而是人们为了便于书写和记录计算机中的二进制数而创造的。引入8(23)进制和16(24)进制后,可分别用一位数代表3位或4位二进制数,缩短二进制数表达长度,但保持了二进制数的表达特点。(00000000000000000000000001100100)2=(?)163.1.2数制的概念进位计数制,简称数制,是人们利用符号来计数的方法。二进制、十进制、八进制和十六进制是学习计算机知识应该掌握的数制。R进制的数,都有以下三个要点:(1)基数为R,即使用R个数码。(0,1)(0,1,2,3,4,5,6,7)(1,2,3,4,5,6,7,8,9,a,b,c,d,e,f)(2)(2)进位规则为逢R进一(3)(3)第i个数位上的数码所具有的位权为Ri。数值可用下面的通式表示:N=Dm-1Dm-2…D1D0D-1D-2…D-kimkiiWDN13.1.3数制转换1.R进制数转换成十进制数转换方法:按权展开法,即把各数位乘权Ri后再相加。例3.1将二进制数10111.1转换成十进制数。(10111.1)2=1×24+0×23+1×22+1×21+1×20+1×2-1=16+0+4+2+1+0.5=23.5例3.2将十六进制数35CH转换成十进制数(35C)16=3×162+5×161+12×160=768+80+12=860例3.3将八进制数127.1转换成十进制数(127.1)8=1×82+2×81+7×80+1×8-1=87.1252.十进制数转换成R进制数整数转换方法:除基数(R)取余。小数转换方法:乘基数(R)取整。例3.4将十进制数45.25转换成二进制数整数部分小数部分45÷2=22余1低位0.25×2=0.5取整数0高位22÷2=11余011÷2=5余10.5×2=1.0取整数1低位5÷2=2余12÷2=1余01÷2=0余1高位所以,45.25=(101101.01)2或(101101.01)B3.二进制数转换为十六进制数4.十六进制转换成二进制数2→16转换方法:四位一组。即从最低位开始,每四位分成一组(不足四位时补0),依次转换。例3.6将二进制数10011010111转换成十六进制数。010011010111最高位补0(粗体字)(4)(D)(7)所以,(10011010111)2=(4D7)16或(4D7)H16→2转换方法:一位变四位。例3.7将十六进制数(4AC)H转换成二进制数4AC(0100)(1010)(1100)所以,(4AC)H=(010010101100)B3.1.4二进制数据算术运算规则(2)减法运算规则0-0=00-1=1并产生借位1-0=11-1=0(1)加法运算规则0+0=00+1=11+0=11+1=0并产生进位例如:0101+)00010110例如:1011–)010101100110二进制数据算术运算规则乘法运算规则例如:11010×0=0×)01010×1=011011×0=000001×1=111011000001除法运算规则0101例如:1101/10000011000001/1101=0101110101101110103.1.5逻辑运算XYX与YX或YX非X异或Y000010010111100101111100一个二进制数位可以用来表示一个二值逻辑型的数据,但逻辑型数据并不存在进位关系。这里的与、或、非逻辑可以用与门、或门、非门电路实现。3.2数值数据的表示和运算计算机中的信息分为:数值型数据数据信息控制信息非数值型数据指令编码问题:-8.25如何在计算机中表示?1、采用什么进位计数制(需要转换为二进制,数制的转换)(-1000.01)22、如何处理和表示小数点?(定点、浮点)3、如何使符号(-,+号)数字化(机器数的编码方法)(1:-;0:+)4、如何方便硬件实现运算。(补码)小数点:定点与浮点表示法1.定点数表示法•定点数表示法通常把小数点固定在数值部分的最高位之前,或把小数点固定在数值部分的最后。前者用来表示纯小数,后者用于表示整数。•在计算机中,图示的小数点“.”实际上是不表示出来的,是事先约定好固定在那里的。对一台计算机来说,一旦确定了一种小数点的位置,整个系统就不再改变。•只能处理定点数的计算机称为定点计算机。在这种计算机中机器指令访问的所有操作数都是定点数。符号数值部分符号数值部分纯小数表示法小数点整数表示法小数点定点数表示法定点数要选择合适的比例因子,确保初始数据、中间结果和最后结果都在定点数的表示范围之内,否则就会产生“溢出”。定点纯小数定点纯整数定点表示方法特点–定点数表示数的范围受字长限制,表示数的范围有限;–定点表示的精度有限–机器中,常用定点纯整数表示2.浮点数表示法•浮点表示法(科学计数法)电子质量(克):9×10-28=0.9×10-27太阳质量(克):2×1033=0.2×1034•小数点的位置可按需浮动,这就是浮点数。浮点数的规格化表示(1.75)10=1.11×20=0.111×21(规格化表示)=0.0111×22规格化表示:阶码为纯小数,且小数点后必须为一位有效数字,对二进制而言,必须为1目的:提高表示精度符号的处理1.无符号数和符号数只能表示正整数.(0=N=2n-1)符号数:它的最高位被用来表示该数的符号位,不表示数值位。在计算机中一个数的数值部分和符号都要用0、1编码。通常,用数的最高位(MSB—MostSignificantBit)表示数的正负MSB=0,表示正数,如+1011表示为01011;MSB=1,表示负数,如-1011表示为11011;2.机器数与真值的概念我们把一个数在机器内的二进制表示形式称为机器数,而把这个数本身称为该机器数的真值,真值是用“+”,“-”号加绝对值来表示数值的大小。如:机器数:01011和11011对应的真值:+1011和-1011。3.原码表示法原码表示法是一种最简单的机器数表示法,其最高位为符号位,符号位为0时表示该数为正,符号位为1时表示该数为负,数值部分与真值相同。若真值为纯小数,其原码形式为XS.X1X2…Xn,其中XS表示符号位。原码的定义为:[X]原=例:X=0.0110[X]原=X=0.0110X=-0.0110,[X]原=1-X=1-(-0.0110)=1+0.0110=1.0110X0≤X<11-X=1+∣X∣-1<X≤03.原码表示法若真值为纯整数,其原码形式为XnXn-1…X1X0,其中Xn为符号位。原码的定义为:[X]原=例3.12:X=1101[X]原=X=01101X=-1101,[X]原=2n-X=24-(-1101)=10000+1101=11101原码表示中,真值0有两种不同的表示形式:[+0]原=00000,[-0]原=10000原码的优点是直观易懂,机器数和真值间的转换很容易,X,0≤X<2n2n-X=2n+∣X∣,-2n<X≤03.原码表示法用原码实现乘、除运算的规则简单(符号位可参与运算:xor)。缺点是加、减运算规则较复杂。(符号位不可直接参与运算)计算:1+(-1)00001+10001=10010=-2符号位如何参与运算原则:⑴使符号位能与有效值部分一起参加运算,从而简化运算规则.⑵符号位参与运算后(减法可转换为加负数)使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计为解决机器内负数的符号位能与数值位一起参加运算的问题,引入了补码的概念。4.补码•有模运算:参与运算的数据和结果被限定在一定范围内,该范围称为模。•计算机运算受字长限制,属于有模运算.定点小数x0.x1x2…xn,以2为模定点整数x0x1x2…xn,以2n+1为模•有模运算性质生活例子:现为北京时间下午4点,但钟表显示为7点。有两种办法校对:(1)做减法7-3=4(逆时针退3格)(2)做加法7+9=16(顺时针进9格)16(mod12)=16-12=4(以12为模,变成4).定义钟表的模为12:钟表所能表达的数的个数定义-3和9互为补数即7-3(7+9)mod12(1)补码表示•有模运算:X-Y=[X+(-Y)补]mod补数负数X的补数:模+X=模-|X|•确定了“模”,就可找到一个与负数等价的正数(该正数是负数的补数)来代替此负数,而这个正数可用模加上负数本身求得,这样就可把减法运算用加法实现了。•补码表示法利用模和互补的概念,可使减法运算转化成加法,从而简化计算机的运算器电路。•例子:1位数符,4位数值位.计算10-3二进制运算通过丢弃高位自动进行模运算。(2)补码表示若真值为纯小数,其原码形式为XnXn-1…X1X0,其中Xn为符号位。•补码的定义为:[X]补=•例3.16:X=0.0110[X]补=X=0.0110X=-0.0110[X]补=2+X=2+(-0.0110)=10-0.0110=1.1010X,0≤X<12+X=2-∣X∣,-1<X≤0(2)补码表示若真值为纯整数,其原码形式为XnXn-1…X1X0,其中Xn为符号位。•补码的定义为:[X]补=例3.17:X=1101[X]补=X=01101X=-1101[X]补=2n+1+X=25+(-1101)=100000-1101=10011在补码表示中,真值0的表示形式是唯一的:[+0]补=[-0]补=00000。10000定义为最小的数-16X,0≤X<2n2n+1+X=2n+1-∣X∣,-2n<X≤0(3)补码运算•采用补码运算要注意以下三个问题:●符号位要与数值位部分一样参加运算。●符号运算后如有进位产生,则把这个进位舍去不要。●补码运算具有性质:[X]补+[Y]补=[X+Y]补例3.18:已知X=0.1101,Y=-0.0001,求[X+Y]补解:[Y]补=10+(-0.0001)=1.1111[X]补=0.1101+[Y]补=1.1111[X+Y]补=10.1100↓舍去不要,相当于模运算运算时候符号位参与运算,减法可转换为加法。但求补还是要做减法。5.反码(1)定义为方便计算机实现对负数求补。可通过反码求补码。将求补操作改变为简单的求反。•对正数来说,其反码和原码的形式是相同的,而负数的反码是符号位为1,数值部分等于其各位的绝对值求反。如:X[X]原[X]反+11010110
本文标题:2015-计算机组成原理-第3章-数据表示
链接地址:https://www.777doc.com/doc-4127868 .html