第四章数据运算数据运算分类:算术运算、移位运算、逻辑运算学习目标:1.列出在数据上进行的三类运算2.在位模式上进行一元和二元逻辑运算3.区分逻辑移位运算和算术移位运算4.在位模式上进行逻辑移位运算5.在以二进制补码形式存储的整数上进行算术移位运算6.在以二进制补码形式存储的整数上进行加法和减法运算7.在以符号加绝对值形式存储的整数上进行加法和减法运算8.在以浮点格式存储的实数上进行加法和减法运算9.理解逻辑和算术运算的一些应用,如置位、复位和指定位的反转等4.1逻辑运算逻辑运算:是指那些应用于模式中的一个二进制位,或在两个模式中相应的两个二进制位的相同基本运算。可以在位层次上和模式层次上定义逻辑运算。模式层次上的逻辑运算是具有相同类型的位层次上的n个逻辑运算,这里的n就是模式中的位的数目。位层次上的逻辑运算二进制位的位层次上的运算:非(NOT)与(AND)或(OR)异或(XOR)UnaryandbinaryoperationsLogicaloperationsTruthtablesNOToperatorExample7UsetheNOToperatoronthebitpattern10011000SolutionTarget10011000NOT------------------Result01100111ANDoperatorExample8UsetheANDoperatoronbitpatterns10011000and00101010.SolutionTarget10011000AND00101010------------------Result00001000InherentruleoftheANDoperatorORoperatorExample9UsetheORoperatoronbitpatterns10011001and00101110SolutionTarget10011001OR00101110------------------Result10111111InherentruleoftheORoperatorXORoperatorExample10UsetheXORoperatoronbitpatterns10011001and00101110.SolutionTarget10011001XOR00101110------------------Result10110111InherentruleoftheXORoperatorMask(掩码)与运算的一个应用就是把一个位模式的指定位复位(置0)。这种情况下的第二个输入称为掩码掩码中的0位对第一个输入中相应的位进行复位掩码中的1位使得第一个输入中相应的位保持不变Mask(掩码)ExampleofunsettingspecificbitsExample11Useamasktounset(clear)the5leftmostbitsofapattern.Testthemaskwiththepattern10100110.SolutionThemaskis00000111.Target10100110ANDMask00000111------------------Result00000110Example12Imagineapowerplantthatpumpswatertoacityusingeightpumps.Thestateofthepumps(onoroff)canberepresentedbyan8-bitpattern.Forexample,thepattern11000111showsthatpumps1to3(fromtheright),7and8areonwhilepumps4,5,and6areoff.Nowassumepump7shutsdown.Howcanamaskshowthissituation?Solutiononthenextslide.Usethemask10111111toANDwiththetargetpattern.Theonly0bit(bit7)inthemaskturnsofftheseventhbitinthetarget.Target11000111ANDMask10111111------------------Result10000111SolutionExampleofsettingspecificbitsExample13Useamasktosetthe5leftmostbitsofapattern.Testthemaskwiththepattern10100110.SolutionThemaskis11111000.Target10100110ORMask11111000------------------Result11111110Example14Usingthepowerplantexample,howcanyouuseamasktotoshowthatpump6isnowturnedon?SolutionUsethemask00100000.Target10000111ORMask00100000------------------Result10100111Figure4-16ExampleofflippingspecificbitsExample15Useamasktoflipthe5leftmostbitsofapattern.Testthemaskwiththepattern10100110.SolutionTarget10100110XORMask11111000------------------Result010111104.2移位运算移位运算移动模式中的位,改变位的位置可以向左或向右移动移位运算分类:逻辑移位运算和算术移位运算4.2.1逻辑移位运算逻辑移位运算应用于不带符号位的数的模式。原因是这些移位运算可能会改变数的符号,此符号是由模式中最左位定义的。分类:逻辑移位、循环移位1.逻辑移位0丢弃逻辑右移0丢弃逻辑左移例题对位模式10011000使用逻辑左移运算解解如下所示,最左位被丢弃,0作为最右位被插入←10011000原始的00110000移位后1.循环移位逻辑右移逻辑左移例题对位模式10011000使用逻辑左移运算解解如下所示,最左位被回环,成为最右位10011000原始的00110001移位后4.2.2算术移位运算算术移位运算假定位模式是以二进制补码格式表示的带符号位的整数算术右移被用来对整数除以2算术左移被用来对整数乘以2算术右移保留符号位,但同时也把它复制,放入相邻的右边的位中,因此,符号位被保存算术左移丢弃符号位,接受它的右边的位作为符号位。若新的符号位与原先的相同,那么运算成功,否则发生上溢或下溢,结果是非法的0丢弃逻辑左移丢弃逻辑右移例题对位模式10011000使用算术右移,模式是二进制补码格式的整数解解如下所示,最左位被保留,被复制到相邻的右边的位中10011000原始的11001100移位后原始数是-103,新的数是-52,它是-103被除以2并取整的结果例题对位模式11011001使用算术左移,模式是二进制补码格式的整数解解如下所示,最左位被丢弃,0作为最右位被插入11011001原始的10110010移位后原始数是-39,新的数是-78,原始数被乘以2.因为没有下溢的发生,所以运算合法。例题对位模式01111111使用算术左移,模式是二进制补码格式的整数解解如下所示,最左位被丢弃,0作为最右位被插入01111111原始的11111110移位后原始数是127,新的数是-2,因为上溢发生,所以结果非法例题逻辑运算和逻辑移位运算提供了操纵位模式的工具。假设有一个模式在判断过程中需要知道使用此模式的第三位(从右起),需要知道这特殊的位是0或1.下面显示如何找到这位的hgfedcba原始的0hgfedcb一次右移00hgfedc二次右移AND00000001掩码0000000c结果4.3算术运算算术运算包括加、减、乘、除等适用于整数和浮点数4.3.1整数的算术运算1.二进制补码整数的加减法整数通常是以二进制补码形式存储的。二进制补码表示法的一个优点是加法和减法之间没有区别RuleofAddingIntegersinTwo’sComplementAdd2bitsandpropagatethecarrytothenextcolumn.Ifthereisafinalcarryaftertheleftmostcolumnaddition,discardit.Note:Example1Addtwonumbersintwo’scomplementrepresentation:(+17)+(+22)(+39)SolutionCarry100010001+00010110----------------------------------Result0010011139Example2Addtwonumbersintwo’scomplementrepresentation:(+24)+(-17)(+7)SolutionCarry1111100011000+11101111----------------------------------Result00000111+7Example3Addtwonumbersintwo’scomplementrepresentation:(-35)+(+20)(-15)SolutionCarry11111011101+00010100----------------------------------Result11110001-15Example4Addtwonumbersintwo’scomplementrepresentation:(+127)+(+3)(+130)SolutionCarry111111101111111+00000011----------------------------------Result10000010-126(Error)Anoverflowhasoccurred.Rangeofnumbersintwo’scomplementrepresentation-(2N-1)----------0-----------+(2N-1–1)Note:Figure4-2Two’scomplementnumbersvisualizationWhenyoudoarithmeticoperationsonnumbersinacomputer,rememberthateachnumberandtheresultshouldbeintherangedefinedbythebitallocation.Note:Example5Subtract62from101intwo’scomplement:(+101)-(+62)(+101)+(-62)SolutionCarry1101100101+11000010----------------------------------Result0010011139Theleftmostcarryisdiscarded.2.符号加绝对值整数的加减法用符号加绝对值表示的整数的加法和减法看起来非常复杂有4种不同的符号组合需要考虑8种不同的情况流程图参考课本第59页流程图解释:1)检查运算:如果运算是减法,那么改变第二个整数(B)的符号,这就意味着只需要考虑两符号整数的加法;2)对两符号应用XOR运算,如果结果(存储在临时单元S中)是0,则意味着符号是相同的(或者两符号都是正的,或者两符号都是负的);3)如果符号是相同的,R=±(AM+BM),则需要相加绝对值,结果的符号是相同的符号,所以得到:RM=(AM)+(BM)和RS=AS这里下标M意味着绝对值,下标S意味着符号,需要注意上溢。两个绝对值相加时,可能会发生上溢,它必须被报告,处理过程终止。4)如