第2章计算机中的数制和编码(1)_第1页
第2章计算机中的数制和编码(1)_第2页
第2章计算机中的数制和编码(1)_第3页
第2章计算机中的数制和编码(1)_第4页
第2章计算机中的数制和编码(1)_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

第2章计算机中的数制和编码(本章授课学时:4H),2.1无符号数的表示及运算2.2带符号数的表示及运算2.3信息的编码2.4数的定点与浮点表示法,计算机的基本功能是进行数据和信息的处理。数据、信息以及为处理这些数据和信息而编写的程序代码等都必须输入到计算机中。由于电子器件容易实现对两种状态的表示,因此计算机中的数字、字符和指令等一般都使用二进制编码来表示。,本章就是要学习数据在计算机中是如何表示的?信息在计算机中是如何表示(编码)的?程序代码的表示将在第4章介绍。,本章首先简要介绍无符号数的表示方法、各种数制的相互转换以及二进制数的运算规则等;然后重点介绍带符号数的表示方法、补码加减法运算以及运算时溢出的判断方法;最后介绍十进制数的二进制编码(BCD编码)、字符(包括字母、数字和符号)的ASCII编码以及数的定点和浮点表示方法等。具体内容如下:1、无符号数的表示方法2、带符号数的表示方法3、信息的编码4、数的定点与浮点表示法,二进制数据在计算机内存中的表示,地址为00002H的存储单元中的内容00110001到底代表什么呢?,2.1无符号数的表示及运算2.2带符号数的表示及运算2.3信息的编码2.4数的定点与浮点表示法,学习要求,通过本章学习,应该熟练掌握数据(包括无符号数和有符号数)、信息等在计算机中的表示方法,具体要求如下:1、掌握十进制数、二进制数、十六进制数的表示方法及其相互转换。2、熟练掌握带符号数的原码、反码、补码表示方法。3、掌握进位和溢出的概念及其判断方法4、了解BCD码、ASCII码的概念以及数的定点与浮点表示法。,2.1无符号数的表示及运算,2.1.1无符号数的表示方法,1.十进制数的表示方法十进制计数法的特点是:逢十进一;使用10个数字符号(0,1,2,9)的不同组合来表示一个十进制数;以后缀D或d表示十进制数(Decimal),但该后缀可以省略。,任何一个十进制数可表示为:,式中:m表示小数位的位数,n表示整数位的位数,Di为第i位上的数符(可以是09十个数字符号中的任一个)。,例2.1138.5(D)=,2.二进制数的表示方法二进制计数法的特点是:逢二进一;使用2个数字符号(0,1)的不同组合来表示一个二进制数;以后缀B或b表示二进制数(Binary)。,例2.21101.11B=,3.十六进制数的表示法十六进制计数法的特点是:逢十六进一;使用16个数字符号(0,1,2,3,9,A,B,C,D,E,F)的不同组合来表示一个十六进制数,其中AF依次表示1015;以后缀H或h表示十六进制数(Hexadecimal)。,任何一个十六进制数可表示为:,式中:m为小数位的位数,n为整数位的位数,Hi为第i位上的数符(可以是0,1,,9,A,B,C,D,E,F十六个数字符号中的任一个)。,例2.30E5AD.BFH=,注意:十六进制计数法是为了克服二进制计数法书写麻烦而引入的一种进位计数制;在编写汇编语言源程序时,如果一个十六进制数的最高位为AF中的一个数字符号时,该数前面必须加0,以与变量名区别;不论数据以什么数制表示,最终在计算机内部都将以二进制形式表示。,ADDAL,10ADDAL,0AHADDAL,00001010B设这三条汇编语言指令中的源操作数都是无符号数,虽然它们在汇编语言指令中是以不同的数制表示,但其对应的实际上是同一条机器指令。请看例子(21.asm),2.1.2各种数制的相互转换1任意进制数转换为十进制数二进制、十六进制以至任意进制数转换为十进制数的方法很简单,只要按式2.1.2,2.1.3和2.1.4各位按权展开(即该位的数值乘于该位的权)求和即可。,2.十进制数转换成二进制数1)整数部分的转换下面通过一个简单的例子对转换方法进行分析。例如,,可见,要确定13D对应的二进制数,只需从右到左分别确定B0,B1,B2,B3即可。,式(2.1.5)右侧除以2:商为,余数为1,此余数即为B0;商再除以2:商为,余数为0,此余数即为B1;商再除以2:商为,余数为1,次余数即为B2;商再除以2:商为0(商为0时停止),余数为1,此余数即为B3。,由以上过程可以得出十进制整数部分转换为二进制数的方法:除以基数(2)取余数,先为低位(B0)后为高位显然,该方法也适用于将十进制整数转换为八进制整数(基数为8)、十六进制整数(基数为16)以至其它任何进制整数。,2)小数部分的转换同样用一个简单例子说明十进制小数部分的转换方法。例如,,要将一个十进制小数转换为二进制小数,实际上就是求B-1,B-2,给式(2.1.6)右侧乘以基数2得:,(2.1.6),整数部分为1,此即为B-1。小数部分为12-1。小数部分再乘以基数2得:整数部分为1,此即为B-2。此时小数部分已为0,停止往下计算(若不为0,继续求B-3,B-4,直到小数部分为0或小数部分的位数满足一定精度时为止),由以上分析可得到十进制小数部分转换为二进制小数的方法:小数部分乘以基数(2)取整数(0或1),先为高位(B-1)后为低位。显然,该方法也适用于将十进制小数转换为八进制小数(基数为8)、十六进制小数(基数为16)以至其它任何进制小数。,例2.4将13.75转换为二进制数。分别将整数和小数部分进行转换:整数部分:13=1101B小数部分:0.75=0.11B因此,13.75=1101.11B,例2.5将28.75转换为十六进制数整数部分:28=1CH小数部分:,B-1=CH,小数部分已为0,停止计算。因此,28.75=1C.CH,3二进制数与十六进制数之间的转换因为24=16,即可用四位二进制数表示一位十六进制数,所以可得到如下所述的二进制数与十六进制数之间的转换方法。将二进制数转换为十六进制数的方法:以小数点为界,向左(整数部分)每四位为一组,高位不足4位时补0;向右(小数部分)每四位为一组,低位不足4位时补0。然后分别用一个16进制数表示每一组中的4位二进制数。将十六进制数转换为二进制数的方法:直接将每一位十六进制数写成其对应的四位二进制数。,例2.61101110.01011B=0110,1110.0101,1000B=6E.58H2F.1BH=101111.00011011B,2.1.3二进制数的运算1.二进制数的算术运算(1)加:0+0=00+1=11+0=11+1=0(进1)(2)减:0-0=01-1=01-0=10-1=1(借位)(3)乘:00=001=010=011=1(4)除:二进制除法是乘法的逆运算。,2.二进制数的逻辑运算(1)“与“运算(AND).“与”运算又称逻辑乘,可用符号“”或“”表示。运算规则如下:00=001=010=011=1可以看出,只有当两个变量均为“1”时,“与”的结果才为“1”。,(2)“或”运算(OR)“或”运算又称逻辑加,可用符号“”或“+”表示。运算规则如下:00=001=110=111=1可以看出,两个变量只要有一个为“1”,“或”的结果就为“1”。,(3)“非”运算(NOT)变量的“非”运算结果用表示。逻辑“非”运算规则如下:(4)“异或”运算(XOR)“异或”运算可用符号“”表示。运算规则如下:可以看出,两变量只要不同,“异或”运算的结果就为“1”。,(4)“异或”运算(XOR)“异或”运算可用符号“”表示。运算规则如下:可以看出,两变量只要不同,“异或”运算的结果就为“1”。,2.2带符号数的表示及运算,2.2.1机器数与真值日常生活中遇到的数,除了上述无符号数外,还有带符号数。对于带符号的二进制数,其正负符号如何表示呢?在计算机中,为了区别正数和负数,通常用二进制数的最高位表示数的符号。对于一个字节型二进制数来说,D7位为符号位,D6D0位为数值位。在符号位中,规定用“0”表示正,“1”表示负,而数值位表示该数的数值大小。把一个数及其符号位在机器中的一组二进制数表示形式,称为“机器数”。机器数所表示的值称为该机器数的“真值”。,2.2.2机器数的表示方法,1.原码设数x的原码记作x原,如机器字长为n,则原码定义如下:,在原码表示法中,最高位为符号位(正数为0,负数为1),其余数字位表示数的绝对值。,例如,当机器字长n=8时,+0原=00000000B-0原=27+0(按定义计算,下同)=10000000B+8原=00001000B-8原=27+8=10001000B+127原=01111111B-127原=27+127=11111111B当机器字长n=16时,+0原=0000000000000000B-0原=215+0=1000000000000000B+8原=0000000000001000B-8原=215+8=1000000000001000B+32767原=0111111111111111B-32767原=215+32767=1111111111111111B,可以看出,8位二进制原码表示数的范围为-127+127,16位二进制原码表示数的范围为-32767+32767;“0”的原码有两种表示法:00000000表示+0,10000000表示-0。,原码表示法简单直观,且与真值的转换很方便,但不便于在计算机中进行加减运算。如进行两数相加,必须先判断两个数的符号是否相同。如果相同,则进行加法运算,否则进行减法运算。如进行两数相减,必须比较两数的绝对值大小,再由大数减小数,结果的符号要和绝对值大的数的符号一致。按上述运算方法设计的算术运算电路很复杂。因此,计算机中通常使用补码进行加减运算,这样就引入了反码表示法和补码表示法。,2.反码设数x的反码记作x反,如机器字长为n,则反码定义如下:,正数的反码与其原码相同。例如,当机器字长n=8时:+0反=+0原=00000000B+127反=+127原=01111111B当机器字长n=16时:+8反=+8原=0000000000001000B+127反=+127原=0000000001111111B,负数的反码是在原码基础上,符号位不变(仍为1),数值位按位取反。例如,当机器字长n=8时:-0反=(28-1)-0=11111111B-127反=(28-1)-127=10000000B反码表示数的范围是:8位二进制反码表示数的范围为-127+127,16位二进制反码表示数的范围为-32767+32767;“0”的反码有两种表示法:00000000表示+0,11111111表示-0。,3.补码设数x的补码记作x补,如机器字长为n,则补码定义如下:,正数的补码与其原码、反码相同。例如,当机器字长n=8时:+8补=+8反=+8原=00001000B+127补=+127反=+127原=01111111B当机器字长n=16时:+8补=+8反=+8原=0000000000001000B+127补=+127反=+127原=0000000001111111B,负数的补码是在原码基础上,符号位不变(仍为1),数值位按位取反,末位加1;或在反码基础上末位加1。例如,当机器字长n=8时:-8原=10001000B-127原=11111111B-8反=11110111B-127反=10000000B-8补=28-8=11111000B-127补=28-127=10000001B可以看出,8位二进制补码表示数的范围为-128+127,16位二进制补码表示数的范围为-32768+32767。8位二进制数的原码、反码和补码如表2.1所示。,表2.18位二进制数的原码、反码和补码表,带符号数(机器数)的表示举例,设下面指令中源操作数是有符号数,查看它们在指令(也就是在计算机)中是如何表示的.ADDAL,-10ADDAL,-0001010BADDAL,-0AHADDAL,-128ADDAL,-0ADDAL,+0见例22.asm,2.2.3真值与机器数之间的转换一原码转换为真值根据原码定义,将原码数值位各位按权展开求和,由符号位决定数的正负即可由原码求出真值。例2.8已知x原=00011111B,y原=10011101B,求x和yx=+(026+025+124+123+122+121+120)=31y=-(026+025+124+123+122+021+120)=-29,2.反码转换为真值要求反码的真值,只要先求出反码对应的原码,再按上述原码转换为真值的方法即可求出其真值。正数的原码是反码本身。负数的原码可在反码基础上,符号位仍为1不变,数值位按位取反。例2.9已知x反=00001111B,y反=11100101B,求x和y解x原=x反=00001111B,x=+(026+025+024+12

温馨提示

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

评论

0/150

提交评论