计算机数据表示与算法_第1页
计算机数据表示与算法_第2页
计算机数据表示与算法_第3页
计算机数据表示与算法_第4页
计算机数据表示与算法_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、计算机数据表示与算法计算机数据表示与算法二进制乘法和加法都是通过对二进制数的移位来实现的,移位相当于×2,计算机算根据给出的加法式子与乘法式子算要移多少位。扩展:一、二进制数据的表示法二进制数据也是采用位置计数法,其位权是以2为底的幂。例如二进制数据110.11,其权的大小顺序为22、21、20、2-1、2-2。对于有n位整数,m位小数的二进制数据用加权系数展开式表示,可写为:(a(n-1)a(n-2)a(-m))2a(n-1)×2(n-1)+a(n-2)×2(n-2)+a(1)×21+a(0)×20+a(-1)×2(-1)+a(-2

2、)×2(-2)+a(-m)×2(-m)二进制数据一般可写为:(a(n-1)a(n-2)a(1)a(0).a(-1)a(-2)a(-m))2。注意:1.式中aj表示第j位的系数,它为0和1中的某一个数。2.a(n-1)中的(n-1)为下标,输入法无法打出所以用括号括住,避免混淆。3.22表示2的平方,以此类推。【例1102】将二进制数据111.01写成加权系数的形式。解:(111.01)2(1×22)+(1×21)+(1×20)+(0×2-1)+(1×2-2)二进制和十六进制,八进制一样,都以二的幂来进位的。二二进制数据的算术

3、运算的基本规律和十进制数的运算十分相似。最常用的是加法运算和乘法运算。1. 二进制加法 有四种情况: 0+000+111+01 1+110 进位为1【例1103】求 (1101)2+(1011)2 的和解:1 1 0 1+ 1 0 1 1-1 1 0 0 02. 二进制乘法有四种情况:0×001×000×101×11【例1104】求 (1110)2 乘(101)2 之积解: 1 1 1 0× 1 0 1- 1 1 1 0 0 0 0 01 1 1 0 -1 0 0 0 1 1 0 (这些计算就跟十进制的加或者乘法相同,只是进位的数不一样而已,十

4、进制的是到十才进位这里是到2就进了)3.二进制减法000,101,110,1011。4.二进制除法0÷10,1÷11。125.二进制拈加法拈加法二进制加减乘除外的一种特殊算法。拈加法运算与进行加法类似,但不需要做进位。三.二进制数的逻辑运算 逻辑运算结果是“1”或“0”,它代表了所要研究问题的两种状态或可能性,赋予逻辑含义,可以表示“真”与“假”、“是”与“否”、“有”与“无”。 计算机中,只有用“1”或“0”两种取值表示的变量,即具有逻辑属性的变量称为逻辑变量。 逻辑运算与算术运算的主要区别是:逻辑运算是按位进行的,位与位之间不像加、减运算那样有进位或借位的联系。 逻辑运

5、算包括三种基本运算:逻辑加法、逻辑乘法和逻辑否定。此外,还可以导出异或运算、同或运算以及与或非运算等。下面介绍4种运算:(1)逻辑加法(又称“或”运算)A.运算符逻辑加法通常用符号“+”或“”来表示。设逻辑变量A、B、C,它们的逻辑加运算关系是:A+B=C 或者写成 AB=C,读作“A或B等于C”。B.逻辑加运算规则 A + B = C A B = C0 + 0 = 0 0 0 = 00 + 1 = 1 0 1 = 11 + 0 = 1 1 0 = 11 + 1 = 1 1 1 = 1结论:在给定的逻辑变量中,只要有一个为1,“或”运算的结果就

6、为1。(2)逻辑乘法(又称“与”运算)A.运算符逻辑乘法通常用符号“×”或“”或“”表示。设逻辑变量A、B、C,它们的逻辑乘运算关系是:AB = C ,A B = C , AB = C。读作“A与B等于C”。B.逻辑乘运算规则A × B = C A B = C AB = C  0 × 0 = 0 0 0 = 0 00 = 00 × 1 = 0 0 1 = 0 01 = 01 × 0 = 0 1 0 = 0 10 = 01 × 1 = 1

7、 1 1 = 1 11 = 1结论:逻辑乘法是“与”的含义,它表示只有参加运算的逻辑变量取值都为1时,逻辑乘积才等于1。(3)逻辑否定(非运算)A.运算符逻辑非运算是在逻辑变量的上方加一横线。B.运算规则设逻辑变量A,其运算规则为:A A 0 1 读作0非等于11 0 读作1非等于0(4)异或逻辑运算A.运算符“异或”运算通常用符号“”表示。B.运算规则按位加,即不带进位的加法。设逻辑变量A、B、C,它的运算规则为:A B = C ,读作:“A同B异或等于C”。AB = C 00 = 001 = 110

8、= 111 = 0结论:在A、B两个逻辑变量中,只要两个逻辑变量的值相同,“异或”运算的结果就为0;当两个逻辑变量的值不同时,“异或”运算的结果才为1。以上介绍的四种逻辑运算在汇编和高级语言里,常用“OR”表示“或”,“AND”表示“与”,“NOT”表示“非”,“XOR”表示“异或”。需要指出的是,计算机可以一次对不同种类的多个逻辑变量进行运算,它们将按照逻辑运算符的优先顺序进行,最终出现一个结果“真”(用1表示)或“假”(用0表示)。四原码 反码 补码 移码4.移码:移码只用于表示浮点数的阶码,所以只用于整数。 移码的定义:设由1位符号位和n位数值位组成的阶码,则 X移=2n + X

9、0;    -2nX 2n例如: X=1011     X移=11011     符号位“1”表示正号              X=1011     X移=00101     符号位“0”表示负号 移码与补码的关系: X移与X补的关系是符号位互为反码,例如: X=1011

10、60;    X移=11011     X补=01011               X=1011     X移=00101     X补=10101  移码运算应注意的问题:对移码运算的结果需要加以修正,修正量为2n ,即对结果的符号位取反后才是移码形式的正确结果。移码表示中,0有唯一的编码100

11、000,当出现00000时(表示2n),属于浮点数下溢。二、补码加、减运算规则1、运算规则XY补= X补 Y补XY补= X补 Y补若已知Y补,求Y补的方法是:将Y补的各位(包括符号位)逐位取反再在最低位加1即可。例如:Y补= 101101 Y补= 010011 2、溢出判断,一般用双符号位进行判断:符号位00 表示正数 11 表示负数结果的符号位为01时,称为上溢;为10时,称为下溢例题:设x=0.1101,y=0.0111,符号位为双符号位用补码求x+y,xy x补+y补=00 1101+11 1001=00 0110 xy补=x补+y补=00 1101+00

12、0111=01 0100结果错误,正溢出三、原码一位乘的实现:设X=0.1101,Y=0. 1011,求X*Y解:符号位单独处理, x符 y符数值部分用原码进行一位乘,如下图所示: 高位部分积 低位部分积/乘数说明      0 0 0 0 0 0   1 0 1 1 起始情况) 0 0 1 1 0 1  乘数最低位为1,+X          0 0 1 1 0 1 

13、;        0 0 0 1 1 0  1 1 0 11(丢)右移部分积和乘数 ) 0 0 1 1 0 1  乘数最低位为1,+X          0 1 0 0 1 1          0 0 1 0 0 1  1 1 1 0 1(丢)右移部分积和乘数

14、0;) 0 0 0 0 0 0  乘数最低位为0,+0          0 0 1 0 0 1          0 0 0 1 0 0  1 1 1 10(丢)右移部分积和乘数 ) 0 0 1 1 0 1  乘数最低位为1,+X          0 1

15、0 0 0 1          0 0 1 0 0 0 1 1 1 11(丢)右移部分积和乘数     四、原码一位除的实现:一般用不恢复余数法(加减交替法) 部分积低位部分积 附加位操作说明      0 0 0 0 0 0    1 0 1 1 起始情况) 0 0 0 0 0 0  乘数最低位为1,+X 

16、0;        0 0 0 0 0 0         0 0 0 0 0 0  1 1 0 11(丢)右移部分积和乘数 ) 1 1 0 0 1 1  乘数最低位为1,+X          0 1 0 0 1 1       

17、0;  0 0 1 0 0 1  1 1 1 0 1(丢)右移部分积和乘数 ) 0 0 0 0 0 0  乘数最低位为0,+0          0 0 1 0 0 1          0 0 0 1 0 0  1 1 1 10(丢)右移部分积和乘数 ) 0 0 1 1 0 1  乘数最低位为1,

18、+X          0 1 0 0 0 1          0 0 1 0 0 0 1 1 1 11(丢)右移部分积和乘数§2.5 浮点运算与浮点运算器一、浮点数的运算规则1、浮点加减法的运算步骤设两个浮点数 X=Mx2Ex Y=My2Ey实现X±Y要用如下5步完成:对阶操作:小阶向大阶看齐进行尾数加减运算规格化处理:尾数进行运算的结果必须变成规格化的浮点数,对于双符号位的补码尾数

19、来说,就必须是001××××× 或110×××××的形式若不符合上述形式要进行左规或右规处理。舍入操作:在执行对阶或右规操作时常用“0”舍“1”入法将右移出去的尾数数值进行舍入,以确保精度。判结果的正确性:即检查阶码是否溢出若阶码下溢(移码表示是000),要置结果为机器0;若阶码上溢(超过了阶码表示的最大值)置溢出标志。例题:假定X=0 .0110011*211,Y=0.1101101*2-10(此处的数均为二进制) ? 计算X+Y;解:X浮: 0 1 010 1100110 

20、0;  Y浮: 0 0 110 1101101            符号位 阶码 尾数第一步:求阶差: E=|1010-0110|=0100第二步:对阶:Y的阶码小, Y的尾数右移4位        Y浮变为 0 1 010 0000110 1101暂时保存 第三步:尾数相加,采用双符号位的补码运算     00 1100110  &#

21、160; +00 0000110     00 1101100第四步规格化:满足规格化要求 第五步:舍入处理,采用0舍1入法处理故最终运算结果的浮点数格式为: 0 1 010 1101101,即X+Y=+0. 1101101*210 2、浮点乘除法的运算步骤阶码运算:阶码求和(乘法)或阶码求差(除法)    即  Ex+Ey移= Ex移+ Ey补         ExEy移= Ex移+ Ey补浮点数的尾数处理:浮点数

22、中尾数乘除法运算结果要进行舍入处理例题:X=0 .0110011*211,Y=0.1101101*2-10求XY解:X浮: 0 1 010 1100110    Y浮: 0 0 110 1101101第一步:阶码相加 Ex+Ey移=Ex移+Ey补=1 010+1 110=1 000 1 000为移码表示的0第二步:原码尾数相乘的结果为:0 10101101101110第三步:规格化处理:已满足规格化要求,不需左规,尾数不变,阶码不变。第四步:舍入处理:按舍入规则,加1进行修正所以 XY= 0.10101112+000 4.移码:移码只用于表示浮

23、点数的阶码,所以只用于整数。 移码的定义:设由1位符号位和n位数值位组成的阶码,则 X移=2n + X     -2nX 2n例如: X=1011     X移=11011     符号位“1”表示正号              X=1011     X移=00101   

24、60; 符号位“0”表示负号 移码与补码的关系: X移与X补的关系是符号位互为反码,例如: X=1011     X移=11011     X补=01011               X=1011     X移=00101     X补=10101  移码运算应注意的问题:对移码运算的结

25、果需要加以修正,修正量为2n ,即对结果的符号位取反后才是移码形式的正确结果。移码表示中,0有唯一的编码100000,当出现00000时(表示2n),属于浮点数下溢。二、补码加、减运算规则1、运算规则XY补= X补 Y补XY补= X补 Y补若已知Y补,求Y补的方法是:将Y补的各位(包括符号位)逐位取反再在最低位加1即可。例如:Y补= 101101 Y补= 010011 2、溢出判断,一般用双符号位进行判断:符号位00 表示正数 11 表示负数结果的符号位为01时,称为上溢;为10时,称为下溢例题:设x=0.1101,y=0.0111,符号位为双符号位用补码求x+y,xy x

26、补+y补=00 1101+11 1001=00 0110 xy补=x补+y补=00 1101+00 0111=01 0100结果错误,正溢出三、原码一位乘的实现:设X=0.1101,Y=0. 1011,求X*Y解:符号位单独处理, x符 y符数值部分用原码进行一位乘,如下图所示: 高位部分积 低位部分积/乘数说明      0 0 0 0 0 0   1 0 1 1 起始情况) 0 0 1 1 0 1  乘数最低位为1,+X  

27、0;       0 0 1 1 0 1         0 0 0 1 1 0  1 1 0 11(丢)右移部分积和乘数 ) 0 0 1 1 0 1  乘数最低位为1,+X          0 1 0 0 1 1        

28、0; 0 0 1 0 0 1  1 1 1 0 1(丢)右移部分积和乘数 ) 0 0 0 0 0 0  乘数最低位为0,+0          0 0 1 0 0 1          0 0 0 1 0 0  1 1 1 10(丢)右移部分积和乘数 ) 0 0 1 1 0 1  乘数最低位为1,+X

29、0;         0 1 0 0 0 1          0 0 1 0 0 0 1 1 1 11(丢)右移部分积和乘数     四、原码一位除的实现:一般用不恢复余数法(加减交替法) 部分积低位部分积 附加位操作说明      0 0 0 0 0 0    1 0 1 1

30、 起始情况) 0 0 0 0 0 0  乘数最低位为1,+X          0 0 0 0 0 0         0 0 0 0 0 0  1 1 0 11(丢)右移部分积和乘数 ) 1 1 0 0 1 1  乘数最低位为1,+X          0

31、1 0 0 1 1          0 0 1 0 0 1  1 1 1 0 1(丢)右移部分积和乘数 ) 0 0 0 0 0 0  乘数最低位为0,+0          0 0 1 0 0 1          0 0 0 1 0 0  1 1

32、 1 10(丢)右移部分积和乘数 ) 0 0 1 1 0 1  乘数最低位为1,+X          0 1 0 0 0 1          0 0 1 0 0 0 1 1 1 11(丢)右移部分积和乘数§2.5 浮点运算与浮点运算器一、浮点数的运算规则1、浮点加减法的运算步骤设两个浮点数 X=Mx2Ex Y=My2Ey实现X±Y要用如下5步完成:对阶操作:小阶向大阶看齐进行尾数加减运算规格化处理:尾数进行运算的结果必须变成规格化的浮点数,对于双符号位的补码尾数来说,就必须是001××××× 或110×××××的形式若不符合上述形式要进行左规或右规处理。舍入操作:在执行

温馨提示

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

评论

0/150

提交评论