陕西师范大学-计算机组成原理-课件ppt-白中英第5版-chp2_第1页
陕西师范大学-计算机组成原理-课件ppt-白中英第5版-chp2_第2页
陕西师范大学-计算机组成原理-课件ppt-白中英第5版-chp2_第3页
陕西师范大学-计算机组成原理-课件ppt-白中英第5版-chp2_第4页
陕西师范大学-计算机组成原理-课件ppt-白中英第5版-chp2_第5页
已阅读5页,还剩349页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章运算方法和运算器主讲:李鹏lipeng@【相关说明:本课件以白中英老师教材及课件为蓝本制作而成,特表感谢;网上文档会伴随教研过程不定期更新版本;最后,恳请文档使用者批评、指正文中出现的错误、疏漏;版本时间:2014.6】《计算机组成原理》(第五版)白中英、戴志涛主编–课件PPT

陕西师范大学计算机科学学院本章主要内容2.1数据与文字的表示2.2定点加法、减法运算2.3定点乘法运算2.4定点除法运算2.5定点运算器的组成2.6浮点运算与浮点运算器教学大纲要求掌握:(一)数制与编码1、进位计数制及其相互转换2、真值和机器数3、BCD码4、字符与字符串5、校验码教学大纲要求掌握:(二)定点数的表示和运算1、定点数的表示

无符号数的表示;有符号数的表示。2、定点数的运算定点数的移位运算;原码定点数的加减运算;补码定点数的加减运算;定点数的乘除运算;溢出概念和判别方法。教学大纲要求掌握:(三)浮点数的表示和运算1、浮点数的表示浮点数的表示范围;IEEE754标准。2、浮点数的加减运算教学大纲要求掌握:(四)算术逻辑单元ALU1、串行加法器和并行加法器2、算术逻辑单元ALU的功能和结构2.1数据与文字的表示方法第一小节主要讨论:现实世界中的各类信息怎样数字化并记录到计算机的存储系统中,进而在后续章节讨论怎样处理这些数据。请思考:如果给你一套计算机系统,它的存储器有很多个连续的“位”,每个“位”可以而且仅可以保存0或者1两种状态,思考怎样将现实世界中的各类信息保存进系统。72.1数据与文字的表示方法现实世界中的信息数据按本质总体上可分成两大类别:数值型数据:表示事物的数量、规模。字符型数据(非数值型数据):字符。因此解决方法是:用二进制表示数值型数据用01序列表示字符型数据2.1.1数据格式目标:将数值型数据表示在计算机内制定怎样的规则来完成这一任务?这个规则应该满足:便于数据的存储、加工(处理)、传送;编码尽可能用少量、简单的基本符号应该有适当的尽可能简单的规则表示尽可能多的信息2.1.1数据格式对面临的问题再深入分析:思考:如果要保存全班学生总数?如果要保存银行收支数据?如果要保存男生所占比例?如果要保存太阳的质量和电子的直径2.1.1数据格式我们的解决方法是:定点表示法&浮点表示法首先回顾预备知识~数制概念:数制,按照进位的原则进行计数称为进位计数制,简称数制。特点表示数值大小的数码与它在数中的位置有关。例:十进制1573.68(展开)

数制1.十进制(Decimal)有十个数码:0,l,2,3,4,5,6,7,8,9。进位基数为10。逢十进一(加法运算),借一当十(减法运算)。如:一个十进制数1573.68其含义是:

1×103+5×102+7×101+3×100+6×10-1+8×10-2可见,一个数字处在不同的数位其代表的意义不同。数制十进制数位权展开式:若有一个n位整数m位小数的十进制数,可表示成(Dn-1Dn-2……D1D0.D-1……D-m)10=

Dn-1×10n-1+Dn-2×10n-2+……+D1×101+D0×100+D-1×10-1……+D-m×10-m10n-1

,10n-2,……100称为十进制的“权”,其中10叫做十进制的“基数”数制推广到所有数制,位权表示法的数制具有如下特征:若有一个n位整数m位小数的R进制数,可表示成(Bn-1Bn-2……B1B0.B-1……B-m)R=Bn-1×Rn-1+Bn-2×Rn-2+……+B1×R1+B0×R0+B-1×R-1……B-m×R-m此表达式又称为R进制的按“权”展开式。Rn-1,Rn-2,

……

R0,

R-1……称为二进制的“权”,其中R叫做“基数”数制-二进制2.二进制(Binary)只有0和1两个数码。进位基数为2。逢二进一(加法运算),借一当二(减法运算)。数制-八进制3.八进制(Octal)有八个数码:0,l,2,3,4,5,6,7。进位基数为8。逢八进一(加法运算),借一当八(减法运算)。数制-八进制例:(7)8+(1)8=(10)8(4)8+(5)8=(11)8(12)8-(5)8=(5)8注意:非十进制数的读法,“个十百千…”是十进制的概念。数制-十六进制4.十六进制(Hexadecimal)有十六个数码:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。基数为16。逢十六进一,借一当十六。A,B,C,D,E,F10,11,12,13,14,15数制-十六进制例:(9)16+(5)16=(E)16(9)16+(7)16=(10)16*(18)16+(C)16=(24)16*(18)16-(C)16=(C)16C12数制-小结进位计数制十进制二进制八进制十六进制数码(数元)0,1,2…90,10,1,2…70,1…9,A,B,C,D,E,F基数102816权重10i2i8i16i标识10或D或不写2或B8或O16或H例子(123)10(110)2(177)8(1AF)16BinaryOctalHexadecimalDecimalBinaryDecimalOctalBinaryDecimalHexadecimalOctalBinaryDecimal非十进制数转换为十进制数方法:按照位权展开:(Bn-1Bn-2……B1B0.B-1……B-m)R=Bn-1×Rn-1+Bn-2×Rn-2+……+B1×R1+B0×R0+B-1×R-1……B-m×R-m非十进制数转换为十进制数例:(11)2=1×21+1×20=(3)10(101)2=1×22+1×20=(5)10(1011)2=1×23+1×21+1×20=(11)10(10110.1)2=24+22+21+2-1=(22.5)10非十进制数转换为十进制数(137.2)8=64+24+7+2×0.125=(95.25)10(2AF)16=2×162+A×161+F×160=(687)10十进制数转换为非十进制数十进制整数转换为二进制整数整数部分:采取“除以2取余”法小数部分采取“乘以2取整”法2122十进制数转换为非十进制数83取余数241B0=1220B1=110B2=025B3=02B4=12B5=00B6=1(83)10=(1010011)2课堂练习:(57)10=(111001)2(83)10=()20.57×21.1410.14×20.280×20.560×21.1210.12×20.240×20.4800.48×20.960×21.921取整数(0.57)10十进制数转换为非十进制数=(0.10010001)2十进制数转换为非十进制数说明:十进制数不一定都能表示成有限位的其他进制小数提示:Windows自带的计算器只能进行整数的数制转换,不能进行小数数制转换课堂练习:(0.6875)10=(0.1011)2十进制数转换为非十进制数十进制数转换为八进制数整数部分:除以8取余小数部分:乘以8取整。

将十进制数95.265625转换成八进制数整数部分用‘除以8取余’

895811810

结果为(95)10=(137)8十进制数转换为非十进制数余数为7余数为3余数为1十进制数转换为非十进制数小数部分用‘乘以8取整’法转换成八进制

0.265625╳8=2.125整数部分为20.125╳8=1整数部分为1结果为(0.265625)10=(0.21)8最终结果(95.265625)10=(137.21)8十进制数转换为非十进制数3.十进制数与十六进制数的相互转换与之前类似:整数部分:除以16取余。小数部分:乘以16取整。十进制数转换为非十进制数-小结十进制数二进制数八进制数十六进制数按权展开法整数部分:除以8取余,逆序取结果小数部分:乘以8取整,正序取结果整数部分:除以16取余,逆序取结果小数部分:乘以16取整,正序取结果整数部分:除以2取余,逆序取结果小数部分:乘以2取整,正序取结果十进制数二进制数二进制与其他进制之间的转换二进制数转换成八进制数(101111001.1101)2101111001.11010017564(101111001.1101)2

=(571.64)8二进制与其他进制之间的转换八进制数转换成二进制数

八进制数转换成二进制数可采取“一位拆三位”,即把一位八进制数写成对应的三位二进制数形式,然后按权连接即可。二进制与其他进制之间的转换(257.34)8257.34010101111.011100(257.34)8=

(10101111.0111)2二进制与其他进制之间的转换二进制数与十六进制数之间的相互转换

二进制基数为2,十六进制基数为16,因

24=16,故二进制四位完整对应十六进制一位转换过程与八进制转换过程类似二进制与其他进制之间的转换十进制二进制八进制十六进制00000001000111200102230011334010044501015560110667011177810001089100111910101012A11101113B12110014C13110115D14111016E15111117F刚才回顾的内容跟计算机本身没有直接关系属于数学中的知识运用数学中的有关数的规则建立计算机中数据表示方法2.1.1数据格式1、定点表示法规则:所有数据的小数点位置固定不变小数点固定在什么位置?纯整数纯小数数值带不带符号?带符号数不带符号数2.1.1数据格式2、定点纯整数

x0x1x2x3…xn-1xn表示数的范围是0≤|x|≤2n-1提问:最小数、最大数、最接近0的正数、最接近0的负数呢?(在数轴上表示)符号量值小数点固定于最后一位之后,不需专门存放位置定点纯整数主要负责表数范围定点纯小数主要负责表数精度3、定点纯小数x0x1x2x3…xn-1xn表示数的范围是0≤|x|≤1-2-n提问:最小数、最大数、最接近0的正数、最接近0的负数?符号量值小数点固定于符号位之后,不需专门存放位置2.1.1数据格式2.1.1数据格式定点整数的溢出以一个字节为例

-1270127负溢出正溢出-(2n-1)(2n-1)2.1.1数据格式定点小数的精度小数点后n位,即精确到2-n以一个字节为例

-101最大值0.1111111,无法表示0.1111111001最近零0.0000001,无法表示0.0000000001-0.0000001,无法表示-0.000000001最小值-0.1111111,无法表示-0.1111111112.1.1数据格式4、定点表示法的特点定点表示方法直接、简单,将二进制计数制与01状态的存储方式较好结合但定点数表示数的范围受字长限制,表示数的大小范围有限;带小数点的实数,需要设置比例因子增大或者缩小若干倍变成整数或者纯小数保存,操作不便所以——引入浮点2.1.1数据格式思考:可否将比例因子和有效数字一并保存在一个连续的存储空间?可以方便的设置比例因子,将实数化为整数或者纯小数保存比例因子的大小决定了小数点所在的实际位置所以——浮动的小数点出现了2.1.1数据格式5、浮点表示格式:N=RE×0.M可在机器中表示为:指数E基数R,取固定的值2尾数M阶符阶码数符尾数任意十进制数N2.1.1数据格式举例:0.11000×21100能人想出了这么有效的数值型数据表示方法!既能保存有效数字,又能大幅拓宽示数范围!

这样的设计会不会仍然存在什么问题??01100

0110002.1.1数据格式

0.11000×21100

0.01100×211010.00110×211100.00011×21111都表示的是同一个十进制数01100

011000011010011002.1.1数据格式同一个数竟然可以有多种不同的表示方法?!肿么办?@_@2.1.1数据格式解决方法:建立一个制度,约束这种多变的情况具体地:建立规格化的浮点表示方法。指的是,当尾数的值不为0时,尾数域的最高有效位应为1。2.1.1数据格式同一个数的四中表示方法:0.11000×21100选用0.01100×21101舍弃0.00110×21110舍弃0.00011×21111舍弃上述四中表示方法,只认第一种问题得到解决!^_^2.1.1数据格式这样,数据的表示就已经很完善了吧~~但还有更能的人粗线了~~既然约定尾数不为0时,最高位始终为1,那也就可以将1省去不写,约定尾数如果写的是M,真正的尾数是1.M节约了一个“位”用1×2-n表示0也能很好的完成0,+∞,-∞等的表示。2.1.1数据格式事情还不只这么简单出于各种目的,有时尾数和阶码不固定的使用机器原码、补码甚至移码、反法。不同的规则、不同的约定使同样的一组01序列,有着不同的解读。2.1.1数据格式规格化浮点数例题:某机浮点规格化表示的位数格式如下,阶码和尾数均为原码,试写出所能表示的最大值、最小值、最接近零的正负值。阶符阶码数符尾数15192.1.1数据格式阶符阶码数符尾数最大值:0.111111111*211111,即,(1-2-9)×231约等于2,143,289,344最小值:-(1-2-9)×231最接近零正值:0.1

×2-31接近零负值:-0.1

×2-3115192.1.1数据格式分析:共计16位,两个字节的存储空间若用浮点可以表示最大值2,143,289,344(阶码位数增加值更大)该值若用定点表示至少需32位:01111111110000000000000000000000(有符号定点整数)若用无符号定点表示:0-65535有符号定点表示:-32767-327672.1.1数据格式再做例题:设浮点数的格式为:阶符1位,阶码4位,数符1位,尾数6位,均为原码且尾数规格化,则该浮点数表示的最大数为_______________。(1-2-6)×215如果在上述格式下要保存十进制数12.25,相应的01序列应为:_____。

0010001100012.1.1数据格式规格化的浮点数表示范围如下图所示最大值:(1-2-6)×215最小值:-(1-2-6)×215最小正值:0.1×2-15

最大负值:0.1

×-2-15

602.1.1数据格式分割线浮点数规格化表示理论具体的IEEE754标准2.1.1数据格式6、IEEE754标准(规定了浮点数的表示格式,运算规则等)规则规定了单精度(32)和双精度(64)的基本格式.规则中,尾数用原码,指数用移码(便于对阶和比较)622.1.1数据格式什么是移码?一般用来表示浮点数的阶码是一个定点有符号整型数据

二进制真值e=e0e1e2……ek-1ek[e]移=2k+eeg.e=+10101[e]移=+10101+100000=110101eg.e=-10101[e]移=-10101+100000=0010112.1.1数据格式但是在IEEE754标准中移码却有特殊的约定:32位浮点数的移码(8位)计算方法是:E=e+127

即e=E-1272.1.1数据格式IEEE754标准32位的浮点数:S:数的符号位,1位,在最高位,“0”表示正数,“1”表示负数。M是尾数,23位,在低位部分,采用纯小数表示E是阶码,8位,采用移码表示。移码比较大小方便。规格化:若不对浮点数的表示作出明确规定,同一个浮点数的表示就不是惟一的。尾数域最左位(最高有效位)总是1,故这一位经常不予存储,而认为隐藏在小数点的左边。采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值127(01111111),即E=e+127。652.1.1数据格式一个规格化的32位浮点数x的真值表示为:

x=(-1)S×(1.M)×2E-127

e=E-12764位的浮点数中符号位1位,阶码域11位,尾数域52位,指数移码偏移值是1023。因此规格化的64位浮点数x的真值为:

x=(-1)S×(1.M)×2E-1023

e=E-1023662.1.1数据格式P18例2:将数(20.59375)10转换成754标准的32位浮点数的二进制存储格式。解:(20.59375)10=10100.1001110100.10011=1.010010011×24S=0,E=4+127=131,M=010010011

最后得到32位浮点数的二进制存储格式为:01000001101001001100000000000000(41A4C000)162.1.1数据格式P18例1:若浮点数x的754标准存储格式为(41360000)16,求其浮点数的十进制数值。(41360000)16010000010011011000000000000000001位8位23位1.011011×210000010–1111111=1.011011×211=1011.011=(11.375)102.1.1数据格式---IEEE示数范围分析IEEE754浮点数格式说明:一个规格化的32位浮点数x的真值可表示为x=(-1)s×(1.M)×2E-127

e=E-127

E全0或E全1:特殊用途;一般数:E的范围是1~254;(阶码范围-126~+127)2.1.1数据格式---IEEE示数范围分析对于IEEE754标准:当阶码E为全0且尾数M也为全0时的值,结合符号位S为0或1,真值x为零,包含正零和负零之分。当阶码E为全1且尾数M为全0时,结合符号位S为0或1,真值为无穷大,也有+∞和-∞之分。702.1.1数据格式---IEEE示数范围分析尾数部分阶码形式0全0零0全1无穷非0全0非正规形式NaN非0全1非正规形式NaN任意非全0或全1正规形式2.1.1数据格式---IEEE示数范围分析IEEE754的32位浮点数表示的除0外的绝对值最小的数:s0000000100000000000000000000000 x=(-1)S×2-126×1.0IEEE754的32位浮点数表示的除∞外的绝对值最大的数:s1111111011111111111111111111111 x=(-1)S×2127×(2-2-23)2.1.1数据格式定点和浮点分析:浮点数所表示的范围远比定点数大。一台计算机中究竟采用定点表示还是浮点表示,要根据计算机的使用条件来确定。一般在高档微机以上的计算机中同时采用定点、浮点表示,由使用者进行选择。而单片机中多采用定点表示。2.1.1数据格式4、十进制数串的表示字符串形式:一个字节存放一个十进制数位(数码)或者符号位。压缩的十进制数串即BCD码其他编码方式有权码:(8421码、2421码、5211码)无权码:(余三码、格雷码)自定义数据表示2.1.1数据格式字符串形式一个字节存放一个十进制的数位或符号位。为了指明这样一个数,需要给出该数在主存中的起始地址和位数(串的长度)。即ASCII码形式。2.1.1数据格式压缩的十进制数串形式压缩的十进制数串形式:一个字节存放两个十进制的数位。它比前一种形式节省存储空间,又便于直接完成十进制数的算术运算,是广泛采用的较为理想的方法。BCD码(二-十进制编码)2.1.1数据格式BCD码:表示一位十进制数的二进制码的每一位有确定的权。一般用8421码,其4个二进制码的权从高到低分别为8、4、2和1。用0000,0001,…,1001分别表示0,1,…,9,每个数位内部满足二进制规则,而数位之间满足十进制规则,故称这种编码为“以二进制编码的十进制(binarycodeddecimal,简称BCD)码”。2.1.1数据格式十进制数8421码2421码5211码4311码000000000000000001000100010001000120010001000110011300110011010101004010001000111100050101101110000111601101100101010117011111011100110081000111011101110910011111111111112.1.2数的机器码表示一、数的机器码表示真值:数值数据的实际值如:-33,1011B,257等机器码:数值数据在计算机内的编码表示机器码的种类:原码反码补码移码为什么要提出机器码?要解决在计算机内部数的正、负符号和小数点运算问题。2.1.2数的机器码表示具体地:在计算机中对数据进行运算操作时,符号位的表示,符号位是否也同数值位一道参加运算?如何参加运算?为了妥善的处理好这些问题,就需要把符号位和数字位一起编码表示数据,为适应不同的处理要求,产生了多种数据编码方法,如原码、补码、反码、移码等。2.1.2数的机器码表示原码、补码、反码的共性:1)这几种编码表示中,正数的编码值与真值一样,负数具有不同的编码。2)编码的最高位为符号位:

0表示正

1表示负2.1.2数的机器码表示—(简化版)1、原码表示法符号位:0表示正,1表示负数值部分:与真值的二进制形式一样原码的特征:1)零有两种表示:+0和-0

[+0]原=0.000...0

[-0]原=1.000...02)优点:简单直观,便于乘、除法运算缺点:加减法运算不便(符号不能直接参与运算)2.1.2数的机器码表示—(简化版)2、反码表示法符号位:0表示正,1表示负 数值部分:正数不变;负数反码是将真值的各位取反得到反码的特征:

1)零有两种表示:+0和-0

[+0]反=0.00...0

[-0]反=1.11...1

2)通常用于求补码,是个过渡编码2.1.2数的机器码表示—(简化版)3、补码表示法符号位:0表示正,1表示负 数值部分:正数不变;负数通过求补得到。补码的特征:

1)零的表示唯一

2)补码加减法运算中,符号直接参与运算

3)定点小数表示中,[-1]补=1.00…02.1.2数的机器码表示—(简化版)4、移码表示法移码通常用于表示浮点数的阶码。阶码是个n位的整数。对于正数,符号位为"1",其余位不变(+1110001->11110001);对于负数,符号位为"0",其余位取反,最后加"1"(-1110001->00001111)。符号位:1表示正,0表示负数值部分:与补码数值部分相同2.1.2数的机器码表示—(简化版)机器码原码反码补码移码正数符号位:0其余位同真值同原码同原码符号位变为1负数符号位:1其余位同真值符号位不变,其余各位取反反码+1符号位位0,其余各位取反加12.1.2数的机器码表示—(简化版)例:写出下列各真值定点8位的原码、反码、补码、移码表示。

(27)10 (-103)10

(-0.01101)2 (-23/64)102.1.2数的机器码表示—(简化版)(27)10=(+11011)2原码:00011011反码:00011011补码:00011011移码:100110112.1.2数的机器码表示—(简化版)(-103)10=(-1100111)2

原码:11100111反码:10011000补码:10011001移码:000110012.1.2数的机器码表示—(简化版)(-0.01101)2原码:1.0110100反码:1.1001011补码:1.1001100移码:0.1001100说明:式子中的小数点只为人们方便查看是小数之用,实际的机器中并不会保存。2.1.2数的机器码表示—(简化版)(-23/64)10=(-0.010111)2

原码:1.0101110反码:1.1010001补码:1.1010010移码:0.10100102.1.2数的机器码表示—(完整版)用公式的形式描述原码反码补码和移码1、原码表示法—定点整数定点整数X0X1X2…Xn(x0为符号位)[x]原=x2n>x≥0

2n-x0≥x>-2n说明:有正0和负0之分范围-(2n-1)~2n–1例:x=+11001110n=8 [x]原=011001110

[-x]原=111001110X为负,-x相当于加上其绝对值1、原码表示法—定点小数定点小数x0.x1x2…xn[x]原=x1>x≥0

1-x0≥x>-1有正0和负0之分范围-(1-2-n)~1-2-n例:x=+0.11001110[x]原=0.11001110[-x]原=1.1100111094原码表示定点小数的临界值x=0.00...0

x=1.00...0

x=0正0和负0都是0x=0.11...1x=1-2-n最大正数x=0.00...01x=2-n

最接近0的正数x=1.00...01

x=-2-n最接近0的负数x=1.11...1

x=-(1-2-n)

最小负数1、原码表示法

原码特点:表示简单,易于同真值之间进行转换,实现乘除运算规则简单。进行加减运算十分麻烦。定点小数表示:x0.x1x2…xn

定义:[X]反

=定点整数表示:x0x1x2…xn定义:[X]反

=X

(2-2-n

)+X0≤X<1-1<X≤0X(2n+1–1)+X0≤X<2n

-2n<X≤02、反码2、反码Egx=+1011011[x]原=01011011用1个字节存储

[x]反=01011011x=-1011011[x]反=28-1+x=100000000-1-1011011=101001003、补码补码是在“模”和“同余”的概念下导出的。“模”是指一个计量系统的计量范围,即产生“溢出”的量。以时钟为例,如下页图:5-2=3,5+10=3-2和10同余,以12为模时钟定位在12点,向后退2个小时和向前拨10个小时得到的效果是相同的3、补码现在是北京时间3点整,而时钟却指向5点。5-2=35+10=3(5+10=15,15-12=3,12自动丢失。12就是模)3、补码继续推导:

5-2=5+10(MOD12)

5+(-2)=5+10(MOD12)

-2=10(MOD12)结论:可以说:在模为12的情况下,-2的补码就是10。一个负数用其补码代替,同样可以得到正确的运算结果。借用补码机制,可在计算机运算中将减法转换为加法运算。3、补码具体地,在计算机中,机器能表示的数据位数是一定的,其运算都是有模运算。如果是n位整数,其模为2n+1。如果是n位小数,其模为2。若运算结果超出了计算机所能表示的数值范围,则只保留它的小于模的低n位的数值,超过n位的高位部分就自动舍弃了。3、补码定义:正数的补码就是正数的本身,负数的补码是原负数加上模。计算机运算受字长限制,属于有模运算.3、补码定点整数定点整数x0x1x2…..xn以2n+1为模[x]补=x2n>x>02n+1+x0≥x≥-2n示数范围:-2n~2n-13、补码定点小数定点小数x0.x1x2…..xn,以2为模[x]补=

x1>x≥02+x0≥x≥-1示数范围:-1~1-2-n3、补码例:x=-1101001[X]补=28+X=100000000+(-1101001)=10010111x=-0.1101001[X]补=2+X=10+(-0.1101001)=1.00101113、补码例:x=-0.1011[x]补=10+x=10.0000-0.1011=1.0101y=-0.01111[y]补=10+y=10.00000-0.01111=1.100013、补码思考:如何通过补码求原码?例如上题例子。由补码求原码,依照用原码求补码的方法。规则相同!4、移码常用的是针对定点有符号整型数据x=x0x1x2……xn,移码的定义是

[x]移=2n+x,-2n≤x<

2n移码的性质:⒈最高位为符号位。⒉0有唯一编码。⒊保持了数据原有的大小顺序。⒋移码只用于浮点数的阶码部分,故一般只用于表示整数。4、移码若一定要表示小数:x=x0.x1x2……xn,移码的定义是

[x]移=1+x,

–(1-2-n)

≤x<1-2-n4、移码eg.X=+0000111(1个字节存储)[x]移=27+0000111=10000000+0000111=10000111X=-1000111[x]移=27-1000111=10000000–1000111=00111001机器码表示练习题例:写出下列定点8位机器码的真值。[x1]原=0.0110101 [x2]原=10000101[x3]反=1.1010101 [x4]反=0.0000101[x5]补=1.0010101 [x6]补=0.1000101[x7]补=1.0000000 [x8]补=100000000[x9]补=00000001[x10]补=10110011[x11]移=1.0010101[x12]移=0.0000101例:写出下列定点8位机器码的真值。[x1]原=0.0110101 [x2]原=10000101解:x1=0.0110101x2=-101例:写出下列定点8位机器码的真值。[x3]反=1.1010101 [x4]反=0.0000101解:X3=-0.0101010X4=0.0000101例:写出下列定点8位机器码的真值。[x5]补=1.0010101 [x6]补=0.1000101解:x5=-0.1101011x6=0.1000101例:写出下列定点8位机器码的真值。[x7]补=1.0000000 [x8]补=10000000解:x7=-1X8=-128例:写出下列定点8位机器码的真值。[x9]补=00000001[x10]补=10110011解:x9=1x10=-1001101例:写出下列定点8位机器码的真值。[x11]移=1.0010101[x12]移=0.0000101解:x11=0.0010101x12=-0.11110112.1.2数的机器码表示【例2.7】将十进制真值(-127,-1,0,+1,+127)列表表示成二进制数及原码、反码、补码、移码值。

补码形式的八位二进制数的示数范围讨论:符号位1位,数值位7位即-27~

27-1-128~127-128怎样表示?原码十进制数0111111112701111110126…………00000011300000010200000001100000000010000000-010000001-110000010-210000011-3…………11111110-12611111111-127原码反码补码十进制数011111110111111101111111127011111100111111001111110126…………0000001100000011000000113000000100000001000000010200000001000000010000000110000000010000000:-00000000011111111:-0000000000100000011111111011111111-1100000101111110111111110-2100000111111110011111101-3…………111111101000000110000010-126111111111000000010000001-12710000000-1282.1.2数的机器码表示到底为什么这么折腾?非要搞个补码出来?补码的设计目的是: ⑴使符号位能与有效值部分一起参加运算,从而简化运算规则。 ⑵使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。 ⑶消除正零负零干扰,最大负数向外拓展1位。所有这些转换都是在计算机的最底层进行的。2.1.2数的机器码表示举例:一个字节内的加减运算若直接用原码:00000001+10000010=100000111+(-2)=-3用补码:00000001+11111110=111111111+(-2)=-12.1.2数的机器码表示【例2.6】以定点整数为例,用数轴形式说明原码、反码、补码表示范围和可能的数码组合情况。2.1.2数的机器码表示【例8】设机器字长16位,定点表示,尾数15位,数符1位,问:(1)定点原码整数表示时,最大正数是多少?最小负数是多少?(2)定点原码小数表示时,最大正数是多少?最小负数是多少?⑶如果均改用补码,是何情况?2.1.2数的机器码表示解答:(1)定点原码整数表示最大正数值=(215-1)10=(+32767)10最小负数值=-(215-1)10=(-32767)10(2)定点原码小数表示最大正数值=(1-2-15)10=(+0.111...11)2最小负数值=-(1-2-15)10=(-0.111..11)22.1.2数的机器码表示(3):改为补码:最大正最小负定点整数:215-1-215

32767-32768定点小数:1-2-15

-12.1.2数的机器码表示回想:C语言中的几个变量定义short:半个机器字长,16位:-32768~32767int:一个机器字长,32位:-2147483648~2147483647long:两个机器字长,64位-9,223,372,036,854,775,808~9,223,372,036,854,775,807(对于32位机)2.1.2数的机器码表示【例9】假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格化浮点数x,真值表示为(非IEEE754标准):

x=(-1)s×(1.M)×2E-128

问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少?移码原码2.1.2数的机器码表示1个字节真值最大的补码:01111111最小的补码:100000001个字节真值最大的移码:11111111最小的移码000000002.1.2数的机器码表示回顾:对于1个字节空间整数移码的计算方法:[x]移=27+xE=10000000+x=128+x所以x=E-1282.1.2数的机器码表示(1)最大正数01111111111111111111111111111111x=[2-2-23]×2127(2)最小正数00000000000000000000000000000000x=1.0×2-128(3)最小负数11111111111111111111111111111111x=-[2-2-23]×2127(4)最大负数10000000000000000000000000000000x=-1.0×2-128

2.1.3字符和字符串(非数值)的表示方法符号数据:字符信息用数据表示,如ASCII等;字符表示方法ASCII:用一个字节来表示,低7位用来编码(128),最高位为校验位10个十进制数码26个英文字母一定量专用符号:控制码2.1.3字符和字符串(非数值)的表示方法ASCII(AmericanStandardCodeforInformationInterchange)共128个常用字符,用7位二进制编码,从0到127控制字符:0~32、127计34个;普通字符:94个。2.1.3字符和字符串(非数值)的表示方法例如:“a”字符编码为1100001,对应的十进制数是97;

换行0AH10

回车0DH13

空格 20H 32‘0’~‘9’30H~39H 48~57‘A’~‘Z’41H~5AH 65~90‘a’~‘z’ 61H~7AH 97~1222.1.3字符和字符串(非数值)的表示方法2.1.3字符和字符串(非数值)的表示方法2、字符串的表示 字符串是指连续的一串字符,通常方式下,它们占用主存中连续的多个字节,每个字节存一个字符。 当主存字由2个或4个字节组成时,在同一个主存字中,既可按从低位字节向高位字节的顺序存放字符串的内容,也可按从高位字节向低位字节的次序顺序存放字符串的内容。2.1.3字符和字符串(非数值)的表示方法eg.IFA>BTHENREAD(C)汉字编码体系汉字编码:汉字是平面结构,字数多,字形复杂,汉字字符集是一个很大的集合,在人们日常生活交往中,经常使用的汉字约有6000多个,使用7位二进制编码是不够的,因此规定用16位二进制代码表示汉字。每个Byte仅用低7位,因此两个字节可表示128x128=16384个汉字。为了与标准ASCII码兼容,每个字节中都不能再用0-32、127共计34个编码,所以每个字节只能有128-34=94个编码。这样,双七位实际能够表示的字数是:94×94=8836个。汉字编码体系汉字输入码:由输入设备产生的汉字编码,如区位码、国标码、拼音码、新全拼、新双拼、五笔字型码、简码、表形码、自然码、智能ABC汉字输入码等。如“保”字,用全拼,输入码为“BAO”,用区位码,输入码为“1703”,用五笔字型则为“WKS”国标码:国家汉字标准代码,简称国标码,是中华人民共和国的中文常用汉字编码集,GB2312。汉字编码体系汉字内码:也叫机内码,用于计算机内部存储和处理的汉字编码,通常由该汉字的国标码的两个字节最高位置“1”形成。汉字字形码:也叫字模码,确定一个汉字字形点阵的编码,用于汉字显示和打印输出。保留在存储介质中的全部汉字字形码称为字库。汉字地址码:表示汉字字形信息在汉字库中的地址,用于在汉字库中查找汉字字形信息的汉字地址码等。汉字编码体系区位码:将字符按其排列位置划分成94区×94位,以字符所在区位编码。例如:区位码4687表示区号为46,在该区中的位置为87。区号区中位置汉字编码体系区位码的编码范围是:0101~9494(0101H~5E5EH)1…………..94 1~9区

10~15区空

16~55区

56~87区

88~94区空字母、数字、各种符号等682个一级汉字3755个二级汉字3008个汉字编码体系区位码可变形为国标码:国标码=区位码+2020H

国标码的取值范围:2121H~7E7EH

国标码、区位码均用两个字节组成一个汉字编码。汉字编码体系机内码汉字在设备或信息处理系统内部最基本的表达形式。汉字机内码=国标码+8080H即两个字节的最高位置1机内码范围是:A1A1H~FEFEH汉字编码体系汉字国标码汉字内码中8680(0101011001010000)B (1101011011010000)B

华5942(0011101100101010)B (1011101110101010)B“西”的区位码是4687,求其内码?十进制区位码4687=2E57H(十六进制区位码)=4E77H(十六进制国标码)=CEF7H(十六进制内码)汉字编码体系汉字字模码:汉字字形汉字编码体系汉字编码体系汉字字模码也称字型码,汉字字模的集合构成了汉字库。汉字地址码每个汉字字形码在汉字字库中的相对位移地址地址码和机内码要有简明的对应转换关系输入字典汉字字库汉字输入系统输入码内码内部处理内存通信显示打印字型码字型码字型码地址码内码国标码汉字编码体系组平面行字位最高位为0基本多文种平面(BMP):0组0平面,包含字母、音节及表意文字等。例如:‘A’ 41H(ASCII) 00000041H(UCS) ‘大’ 3473H(GB2312) 00005927H(UCS其他汉字编码UCS码、Unicode码、GBK码、BIG5码等

国际标准:通用多八位编码字符集UCS(UniversalCodeSet)世界各种文字的统一的编码方案,一个字符占4个字节。分为:汉字编码体系

Unicode码

另一国际标准:采用双字节编码统一地表示世界上的主要文字。其字符集内容与UCS的BMP相同。

GBK码

GBK等同于UCS的新的中文编码扩展国家标准,2字节表示一个汉字第一字节从81H~FEH,最高位为1;第二字节从40H~FEH,第二字节的最高位不一定是1。

BIG5编码台湾、香港地区普遍使用的一种繁体汉字的编码标准,包括440个符号,一级汉字5401个、二级汉字7652个,共计13060个汉字。汉字编码体系数据校验码奇偶校验码:在表示数据的N位代码中增加一位奇偶校验位,使N+1位中“1”的个数为奇数(奇校验)或偶数(偶校验)。大多数计算机在设计时允许为每个字符的编码添加第9位,作为奇偶校验位。数据校验码奇校验当除奇偶校验位以外,“1”的总位数为偶数时,将该位置为1偶校验当除奇偶校验位以外,“1”的总位数为偶数时,将该位置为0下面通过一个实际的例子看一下奇偶校验位的使用方法。数据校验码字母“A”的ASCII码为01000001,有偶数个“1”,因此:使用偶校验时,校验位记为0,即:

001000001

使用奇校验时,校验位记为1,这样1的总数为奇数个,即:

101000001校验位数据校验码字母“C”的ASCII码为01000011,有奇数个“1”,因此:使用偶校验时,校验位记为1,这样1的总数为偶数个,即:

101000011

使用奇校验时,校验位记为0,即:

001000011数据校验码海明校验码:在有效信息代码中增加校验位,用来校验代码中“1”的个数是奇数(奇校验)还是偶数(偶校验),通过奇偶校验可以发现代码传输过程中的错误并自动校正。应用:用于计算机各部件之间信息传输以及计算机网络的信息传输。数据校验码循环冗余校验码(CRC)用于多位串行数据传送中的检错纠错处理,在

k位数据位串行移位输出的过程中,用带有异或门控制的移位寄存器形成r个校验位的值,跟随在数据位之后传送走。在接收端再对k+r位的码字进行合法与出错检查,若可能则自动改错。2.2定点加法、减法运算2.2.1补码加减法2.2.2溢出检测2.2.3基本的加法和减法器2.2.4十进制加法器2.2.1补码加减法补码加法公式:[x+y]补=[x]补+[y]补证明过程略验证过程可以有2.2.1补码加法[例11]x=+1001,y=+0101,求x+y=?

解:[x]补=01001,[y]补=00101

[x]补01001

+[y]补00101

————————————————

[x+y]补01110

∴x+y=+11102.2.1补码加法[例12]x=+1001,y=-0101,求x+y=?

解:[x]补=01001,[y]补=11011

[x]补01001

+[y]补11011

————————————————

[x+y]补100100

∴x+y=+01002.2.1补码加减法例x=-0.1011,y=0.0111,求x+y[x]补=1.0101[y]补=0.0111[x+y]补=[x]补+[y]补=1.0101+0.0111=1.1100x+y=-0.01002.2.1补码加法补码减法公式:

[x-y]补=[x]补+[-y]补

(证明略)计算x-y,须得到[x-y]补2、补码减法最大的优点就是将减法运算转换成加法运算。

[X-Y]补=[X]补+[-Y]补

=[X]补-[Y]补[-Y]补=-[Y]补

(mod2n+1)证明过程略例如X=(11)10=(1011)2Y=(5)10=(0101)2已知字长n=5位,求x-y。[x-y]补=[X]补+[-Y]补=01011+11011=100110=00110=(6)10注:最高1位已经超过字长故应丢掉待计算的两个数:x,y均以补码形式出现,现在期望得到[-y]补,怎么转换?注意:已知[y]补求[-y]补方法:连符号位一起各位求反,末位加1。公式:[-y]补=-[y]补+2-n

2-n涵义:最末位的1例:[X]补=11010101解:由[-X]补求[X]补,此规则同样适用。[X]补=11010101[-X]补=00001110+100101011提问:由[X]补求[X/2]补?X与X/2X:10110向右移动一位:01011=x/2由[X]补求[X/2]补?将[X]补的符号位和数值位一起向右移动一次.符号位移走后保持原来的值不变.例:[X]补=10011000[X/2]补=101010001这称为“算术移位”[X/4]补和[X/8]补同理[例13]已知x1=-1110,x2=+1101,求:

[x1]补

,[-x1]补

,[x2]补

,[-x2]补。

解:

[x1]补

=10010

[-x1]补

=01101+00001=01110

[x2]补

=01101

[-x2]补

=10010+00001=10011[例14]x=+1101,y=+0110,求x-y=?

解:[x]补=01101

[y]补=00110,[-y]补=11010

[x]补01101

+[-y]补11010

————————————————

[x-y]补100111

∴x-y=+0111以一个字节存储练习:-1+0.01-0.1011-0.00102.2.1补码加减法特殊例子:

x=+0.11011,y=-0.11111,求x-y。[x]补=0.11011[y]补=1.00001输入的两个数是补码形式[-y]补=0.11111[x-y]补=[x]补+[-y]补=0.11011+0.11111=1.11010x-y=-0.00110判断?溢出?2.2.2溢出的检测溢出的检测可能产生溢出的情况两正数加,变负数,上溢(大于机器所能表示的最大数)两负数加,变正数,下溢(小于机器所能表示的最小数)2.2.2溢出的检测例3:x=+0.1011,y=+0.1001,求x+y例4:x=-0.1101,y=-0.1011,求x+y2023/9/20176

[例15]x=+1101,y=+1001,求x+y。

解:[x]补=01011,[y]补=01001

[x]补01011

+[x]补01001

——————————————

[x+y]补10100

两个正数相加的结果成为负数,表示正溢。[例16]x=-1101,y=-1011,求x+y。

解:[x]补

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论