第3章数据处理(1)数的表示及数制.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第3章数据处理3.1数据表示3.2常量表达3.3变量应用3.4数据传送类指令3.5算术运算类指令3.6位操作类指令3.7串操作类指令3.8IA-32指令系统23.1计算机中数的表示数据(Data):计算机处理的对象对应指令操作的对象:操作数(Oprand)在计算机中,只能存储、处理二进制信息数值信息:只能用二进制表示非数值信息:用二进制编码表示程序在计算机内部也是用二进制形式表示的。33.1.1数制及其转换我们人习惯于使用十进制数据,而计算机内部是用二进制数据,他们之间各自有什么特点,如何进行相互转换?41.十进制数的表示方法十进制计数法的特点是:①使用10个数字符号(0,1,2,……,9)的不同组合来表示一个十进制数;②采用“逢十进一”的进位规则;5任何一个十进制数可表示为:110nmjijDKnN式中:m表示小数位的位数,n表示整数位的位数,Kj为第j位上的数符(可以是09十个数字符号中的任一个)。例如138.5(D)=1012105108103101注意书写:以后缀D或d表示十进制数(Decimal)。对于十进制数,该后缀可以省略。6二进制计数法的特点是:①使用2个数字符号(0,1)的不同组合来表示一个二进制数;②逢二进一的进位规则;任何一个二进制数可表示为:12nmiiiBBN式中:m为小数位的位数,n为整数位的位数,Bi为第i位上的数符(0或1)。例如)(75.132121212021211101.11B210123D后缀B或b表示二进制数(Binary),例如1011B,后缀不能省略2.二进制数的表示方法7十六进制计数法的特点是:①使用16个数字符号(0,1,2,3……,9,A,B,C,D,E,F)的不同组合来表示一个十六进制数,其中AF依次表示1015;②逢十六进一的进位规则;3.十六进制数的表示法8任何一个十六进制数可表示为:116nmiiiHHN式中:m为小数位的位数,n为整数位的位数,Hi为第i位上的数符(可以是0,1,…,9,A,B,C,D,E,F十六个数字符号中的任一个)。例2.30E5AD.BFH=210123161516111613161016516149注意在书写十六进制数据时,如果最高位是大于9的数符(A~F),则需要在前面加一个0。例如:0B36H用后缀H或h表示十六进制数(Hexadecimal),后缀不能省略。例如12345H——十六进制数据如果写成12345,没有“H”,则表示是一个十进制数据10一般来说,对于基数为X的任一数可用多项式表示为:1nmiiiXXkN式中:X为基数,表示X进制;i为位序号;m为小数部分位数;n为整数部分的位数;ki为第i位上的数值,可以为0,1,2,…,X-1共X个数字符号中任一个;Xi为第i位的权。4.任意进制数据11二进制、十六进制以至任意进制数转换为十进制数的方法很简单,只要按上面的展开公式各位按权展开(即该位的数值乘于该位的权)求和即可。例如:5.其它进制数转换为十进制数62021212001100123B5216416316016000340123H121).整数部分的转换下面通过一个简单的例子对转换方法进行分析。例如,B2B3B0B2B1B0B3B1012321202121101113BD可见,要确定13D对应的二进制数,只需从右到左分别确定B0,B1,B2,B3……即可。6.十进制数转换成二进制数13余数再除以2:商为余数为0,此余数即为B1=0;012121上式右侧除以2:商为余数为1,此余数即为B0=1;012202121余数再除以2:商为余数为1,此余数即为B2=1;021即:13D=1101B余数再除以2:商为余数为1,此余数即为B3=1;0商为0后,结束14由以上过程可以得出十进制整数部分转换为二进制数的方法:除以基数(2)取余数,先为低位(B0)后为高位显然,该方法也适用于将十进制整数转换为八进制整数(基数为8)、十六进制整数(基数为16)以至其它任何进制整数。这种方法叫做长除法。15例1.1:将十进制数1234转换成二进制数。12342617030811540770381190914120100110011010010B最先得到的是最低有效位最后得到的是最高有效位16同样用一个简单例子说明十进制小数部分的转换方法。例如,B-1B-2B-1B-221212111.075.0BD要将一个十进制小数转换为二进制小数,实际上就是求B-1,B-2,……给上式右侧乘以基数2得:1211整数部分为B-1小数部分2)小数部分的转换17整数部分为1,此即为B-1。小数部分为12-1。小数部分再乘以基数2得:整数部分为1,此即为B-2。此时小数部分已为0,停止往下计算(若不为0,继续求B-3,B-4……,直到小数部分为0或小数部分的位数满足一定精度时为止)18由以上分析可得到十进制小数部分转换为二进制小数的方法:小数部分乘以基数(2)取整数(0或1),先为高位(B-1)后为低位。显然,该方法也适用于将十进制小数转换为八进制小数(基数为8)、十六进制小数(基数为16)以至其它任何进制小数。小数部分的转化,有时可能总也不会到0,这时只要转换到所需要的为数就行了。既有整数,又有小数,则分别转换,再合成。19例将13.75转换为二进制数。分别将整数和小数部分进行转换:整数部分:13=1101B小数部分:0.75=0.11B因此,13.75=1101.11B在例如:将13.34转换为二进制数,小数部分4位整数部分:1101,小数部分:010113.34=1101.0101B小数部分没有转换完,只需要到所规定的为数就行了(虽然它会造成误差)。20例将28.75转换为十六进制数整数部分除以16取余数,小数部分乘以16取整数。整数部分:28=1CH小数部分:0.75*16=12CH,,B-1=CH,小数部分已为0,停止计算。因此,28.75=1C.CH21用四位二进制数表示一位十六进制数,所以可得到如下所述的二进制数与十六进制数之间的转换方法。将二进制数转换为十六进制数的方法:以小数点为界,向左(整数部分)每四位为一组,高位不足4位时补0;向右(小数部分)每四位为一组,低位不足4位时补0。然后分别用一个16进制数表示每一组中的4位二进制数。将十六进制数转换为二进制数的方法:直接将每一位十六进制数写成其对应的四位二进制数。7.二进制数与十六进制数之间的转换22例:将二进制数1101110.01011B转换成十六进制数。1101110.01011B=0110,1110.0101,1000B=6E.58H例1.5:将十六进制数0F3.1BH转换成二进制数。0F3.1BH=11110011.00011011B由于最高位(最左边)大于9,所以在其左侧添加一个0,它不影响数值。23(1).二进制数的加减运算规则①加:0+0=00+1=11+(1)0=11+1=0(进1)②减:0-0=01-1=01-0=10-1=1(借位)(2)乘除法运算可以通过加减法运算实现。二进制数据的运算规则简单,再加上容易存储,因此计算机中的数据都用二进制表示,非数值信息则用二进制编码表示。8.二进制算术运算9.逻辑运算事件的假和真可用数码0和1表示事件之间的关系可以利用二进制表达数字电路的低高电平用数码0和1表示数字信号之间的关系可以利用二进制描述数码0和1仅仅代表两种状态它们的运算是逻辑运算26(1)与:“与”可用符号“”或“”表示。规则为:00=001=010=011=1可以看出,只有当两个变量均为“1”时,“与”的结果才为“1”。(2)或:“或”运算又称逻辑加,可用符号“”或“+”表示。规则为:00=001=110=111=1可以看出,两个变量只要有一个为“1”,“或”的结果就为“1”。27(3)非运算:逻辑“非”运算规则如下:10,01011101110000(4)“异或”运算(XOR)“异或”运算可用符号“”表示。运算规则如下:28例如,4位二进制数的逻辑运算:–逻辑与AND:11010011=0001–逻辑或OR:11010011=1111–逻辑非NOT:1101=0010–逻辑异或XOR:11010011=1110293.1.2数值的编码编码:用文字、符号或者数码来表示某种信息(数值、语言、操作指令、状态等)的过程二进制编码:组合0和1数码机器数:计算机中用0和1数码组合表达的数值真值:现实中真实的数值数值的两种编码方式–定点格式–浮点格式现只讨论定点格式数据——小数点位置固定不变。301机器数与真值(1)真值日常生活中遇到的数,除了上述无符号数外,还有带符号数。对于带符号的二进制数,其正负符号如何表示呢?我们可以用“+”,“-”符号来表示数的符号。例如N1=+1101001B=+105;N2=-1101001B=-105这样用“+”,“-”符号表示的数,叫做数的真值。数的真值可以使用二进制形式,也可以使用十进制形式,或八进制数、十六进制数。31在计算机中,我们只存储0,1两个代码,数的符号没办法用“+”,“-”符号来表示。为了表示数的符号,我们通常约定:用二进制数的最高位表示数的符号。这时最高位叫做符号位。规定用“0”表示正,“1”表示负。一个数在机器中用最高位表示数的符号,其它位表示数值的大小的这种表示形式,叫做机器数。这样对于n位二进制数,如果它是一个带符号的数,则最高位Bn-1就表示数的符号,剩下的n-1位表示数的大小。(2)机器数32例如对于一个字节型二进制数来说,n=8共有8位,D7位为符号位,D6D0位为数值位。简单的说,机器数就是数据在机器中的二进制表示形式。机器数所表示的值称为该机器数的“真值”。例如,一个带符号的数,最高位为符号位,其它位为数的值,它的真值为(机器数用原码表示)机器数11101001B真值-1101001B(-105)01101110B+1101110B(+110)332.带符号数与无符号数用一位二进制位表示数的符号:0表示正数,1表示负数,这种表示数的方法,称为带符号数的表示方法。所表示的数,叫做带符号的数。带符号的数其最高位为符号位。如果将全部有效位都用来表示数的大小,这种数的表示方法,叫无符号数的表示方法,所表示的数,叫无符号数。数据在机器中的表示,还有不同的码制—主要有:原码、反码、补码、移码。343机器数的表示方法(1)原码设数x的原码记作[x]原,如机器字长为n,则原码如下:最高位为符号位(正数为0,负数为1),其余数字位表示数的绝对值。35例如,当机器字长n=8时,[+0]原=00000000B[-0]原=10000000B[+8]原=00001000B[-8]原=10001000B[+127]原=01111111B[-127]原=11111111B当机器字长n=16时,[+0]原=0000000000000000B[-0]原=1000000000000000B[+8]原=0000000000001000B[-8]原=1000000000001000B[+32767]原=0111111111111111B[-32767]原=1111111111111111B36可以看出8位二进制原码表示数的范围为-127+127,16位二进制原码表示数的范围为-32767+32767;n位原码的数据表示范围:-(2n-1-1)~2n-1-1“0”的原码有两种表示法:00000000表示+0,10000000表示-0。37原码表示法简单直观,且与真值的转换很方便,但不便于在计算机中进行加减运算。如进行两数相加,必须先判断两个数的符号是否相同。如果相同,则进行加法运算,否则进行减法运算。如进行两数相减,必须比较两数的绝对值大小,再由大数减小数,结果的符号要和绝对

1 / 78
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功