微型计算机原理与应用第一章微型计算机基础知识第一章微型计算机基础知识2【主要内容】1.计算机运算基础进位计数制特点(二、八、十六进制);无符号数和带符号数的表示方法;机器数和真值;定点数和浮点数;2.编码(BCD码、ASCII码)第一章微型计算机基础知识3【学习目标】1.掌握常用进位计数制及其相互转换;2.掌握数的原码、反码、补码表示法,并熟练掌握补码加减运算;3.掌握BCD码、ASCII码;4.理解数的定点和浮点表示;第一章微型计算机基础知识4【重点】1.计算机中的数制及其编码2.溢出的判断;第一章微型计算机基础知识5【难点】1.有符号数和无符号数溢出判断2.溢出和进位的区别第一章微型计算机基础知识6【知识点】1.2原码、补码、反码及其相应的运算法则1.3数的定点和浮点表示1.4十进制数的二进制编码及ASCII码1.1数和数制第一章微型计算机基础知识71.1.1数据存储方式计算机内的信息均以二进制数表示,存储在内存中。一般以字节(Byte)为单位存储,每个字节占据一个内存地址存储容量与地址总线的多少有关。字(Word):两个相邻字节组成的16位二进制数;双字(Doubleword):四个相邻字节组成的16位二进制数。多字节数据的存储:高位字节存储在地址号高的单元,低位字节存储在地址号低的单元中。且低位的地址号为该数据的地址。在内存中可寻址单位是字节,但在指令及程序中可寻址单元可以是bit,halfbyte,byte,word,doubleword,block1234的存储M+2M+1MM-112341A2BCD3F的存储M+3M+2M+1M3FCD2B1A1.1数和数制第一章微型计算机基础知识8几个概念:位、字、字节、双字和字长•位(bit)是计算机所能表示的最小最基本的数据单位,它指的是取值只能为0或1的一个二进制数值位。位作为单位时记作b•字节(byte)由8个位二进制位组成,通常用作计算存储容量的单位。字节作为单位时记作B。例如8086/8088有20位地址线,它的存储器寻址范围(容量)是220字节,记做1MB。1K=1024=210;1M=1024K=220;1G=1024M=230;1T=1024G=240;1KB=1K×8b•字(word)是计算机内部进行数据传递的基本单位,它通常取决于微处理器内部通用寄存器的位数和数据总线的宽度。1.2计算机中的数制和编码第一章微型计算机基础知识9几个概念:位、字、字节、双字和字长•字长是字所包含的二进制位数,即微处理器一次可以直接处理的二进制数码的位数。微处理器的字长有4位、8位、16位和32位等等。例如:8088称为准16位微处理器,而80386SX称为准32位微处理器。•IBMPC/XT机规定:字(W)=2字节=16位双字(DW)=4字节=32位四字(QW)=8字节=64位1.2计算机中的数制和编码半字节字节字双字03034707078F8F1017181F第一章微型计算机基础知识101.1.2数的进位制表示1、进位计数制的一般表达式:ND=dn-1×an-1+dn-2×an-2+…+d0×a0+d-1×a-1+…一个a1进制的数转换成a2进制数的方法:先展开,然后按a2进制的运算法则求和计算。2、二,十六进制数转换成十进制数1011.1010B=1×23+1×21+1×20+1×2-1+1×2-3=11.625DFC.8H=13×162+15×161+12×160+8×16-1=3580.51.1数和数制第一章微型计算机基础知识111.1数和数制3、二进制与十六进制数之间的转换24=16,四位二进制数对应一位十六进制数。3AF.2H=001110101111.0010=1110101111.0010B3AF21111101.11B=01111101.1100=7D.CH7DC0000b--0h1000b--8h0001b--1h1001b--9h0010b--2h1010b--0ah0011b--3h1011b--0bh0100b--4h1100b--0ch0101b--5h1101b--0dh0110b--6h1110b--0eh0111b--7h1111b--0fh第一章微型计算机基础知识12例1.39转换成二进制数39=100111B2391(b0)2191(b1)291(b2)240(b3)220(b4)211(b5)04、十进制数转换成二、十六进制数(1)整数转换法“除基取余”:十进制整数不断除以转换进制基数,直至商为0。每除一次取一个余数,从低位排向高位。例2.208转换成十六进制数208=D0H16208余01613余13=DH01.1数和数制第一章微型计算机基础知识131.1数和数制(2)小数转换法“乘基取整”:用转换进制的基数乘以小数部分,直至小数为0或达到转换精度要求的位数。每乘一次取一次整数,从最高位排到最低位。例3.0.625转换成二进制数0.625×21.2501(b-1)×20.500(b-2)×21.01(b-3)•0.625=0.101B第一章微型计算机基础知识141.1数和数制例4.0.625转换成十六进制数0.625×16=10.00.625=0.AH例5.208.625转换成十六进制数208.625=D0.AH第一章微型计算机基础知识15一、有符号数和无符号数的表示无符号数的表示:所有的数据位全部用来表示数值本身,n位无符号数表示的数的范围为0~2n-1。如:8bit0~255;16bit0~65535有符号数的表示:最高位表示数的正负符号,其他位表示数值。二、原码、补码和反码1、原码:正数的符号位为0,负数的符号位为1,其它位按照一般的方法来表示数的绝对值。用这样的表示方法得到的就是数的原码。•原码的定义:最高位为符号位,0表示“+”,1表示“-”,数值位与真值数值位相同;•“0”的原码表示:(+0)原=00000000,(-0)原=10000000;•n位二进制数原码的表示范围为+(2n-1-1)~-(2n-1-1)8位二进制原码表示的整数范围是-127~-0~+0~+127---》256个数16位二进制原码表示的整数范围是-32767~+327671.2原码、补码、反码及其相应的运算法则第一章微型计算机基础知识16正数与负数的原码表示:(求法)例如:求X=+105的原码(X)原=01101001求X=-105的原码(X)原=11101001原码表示简单直观,但0的表示不唯一,加减运算复杂,如果两个异号数相加或两个同号数相减就要做减法。有了数值的表示方法就可以对数进行算术运算.但是很快就发现用带符号位的原码进行乘除运算时结果正确,而在加减运算的时候就出现了问题,如下:假设字长为8bits(1)10-(1)10=(1)10+(-1)10=(0)10(00000001)原+(10000001)原=(10000010)原=(-2)显然不正确.因为在两个整数的加法运算中是没有问题的,于是就发现问题出现在带符号位的负数身上,对除符号位外的其余各位逐位取反就产生了反码.反码的取值空间和原码相同且一一对应.下面是反码的减法运算:1.2原码、补码、反码及其相应的运算法则第一章微型计算机基础知识172、反码:•正数的反码与其原码相同;•负数的反码将其原码的数值部分取反,符号位仍为“1”;•“0”的反码:“0”的反码有正负之分(+0)反=00000000,(-0)反=11111111;n位二进制数原码的表示范围为+(2n-1-1)~-(2n-1-1);例如:X=-4,(X)原=10000100,(X)反=11111011,(X)反=10010100,则其原码为11101011,为-107反码的特点与原码类似,多用在求反逻辑运算中。下面是反码的减法运算(1)10-(1)10=(1)10+(-1)10=(0)10(00000001)反+(11111110)反=(11111111)反=(-0)有问题.(1)10-(2)10=(1)10+(-2)10=(-1)10(00000001)反+(11111101)反=(11111110)反=(-1)正确1.2原码、补码、反码及其相应的运算法则第一章微型计算机基础知识18问题出现在(+0)和(-0)上,在人们的计算概念中零是没有正负之分的于是就引入了补码概念.1.2原码、反码、补码及其相应的运算法则第一章微型计算机基础知识193、补码:•正数的补码与其原码相同;•负数的补码为其反码加1;•0无正负之分;+0=00000000,-0=10000000,(-0)补=11111111+1=00000000•n位二进制数补码的表示范围为+(2n-1-1)~-2n-1•8位二进制补码表示的整数范围是-128~+12716位二进制补码表示的整数范围是-32768~+32767在补码中用(-128)代替了(-0),所以补码的表示范围为:(-128~0~127)共256个.注意:(-128)没有相对应的原码和反码,(-128)=(10000000)•例如:X=-4,(X)原=10000100,(X)补=111111001.2原码、反码、补码及其相应的运算法则第一章微型计算机基础知识20上面的例子用补码来做:(1)10-(1)10=(1)10+(-1)10=(0)10(00000001)补+(11111111)补=(00000000)补=(0)正确(1)10-(2)10=(1)10+(-2)10=(-1)10(00000001)补+(11111110)补=(11111111)补=(-1)正确引入补码运算的目的:防止0有两个编码,可以将符号位参与运算,可以用加法代替减法运算1.2原码、反码、补码及其相应的运算法则VERYIMPORTANT第一章微型计算机基础知识21综上所述:X为正数时有:(X)原=(X)反=(X)补X为负数时有:(X)补=(X)反+1,((X)补)补=(X)原((X)反)反=(X)原1.2原码、反码、补码及其相应的运算法则第一章微型计算机基础知识224、补码的求法正数补码等于其原码。以下针对负数求补。1)根据定义求:(X)补=2n+X=2n_-/X/如X=-1010111,n=8,则(X)补=28+(-1010111)=100000000-1010111=10101001,有减法运算不方便。•利用原码求:一个负数的补码等于其原码除符号位以外的各位按位取反,再在最低位加1。如X=-1010111,(X)原=11010111,则(X)补=10101000+1=10101001•简便的求补:从原码的最低位起,到出现第一个1以前(包括第一个1)的数字不变,以后逐位取反,但符号位不变。如X=-1010111,(X)原=11010111,则(X)补=10101001X=-1110000,则(X)原=11110000,则(X)补=100100001.2原码、反码、补码及其相应的运算法则第一章微型计算机基础知识231.2原码、补码、反码及其相应的运算法则5.补码的运算加法:(X+Y)补=(X)补+(Y)补,把符号位与数值位一起运算,如有进位则丢掉,结果为两数之和的补码形式减法:X-Y=X+(-Y),可将减法转换为加法,(X-Y)补=(X)补+(-Y)补,(-Y)补称为变补。变补的求法:对补码的每一位(包括符号位)都按位取反,然后再加1,即((Y)补)变补=(-Y)补第一章微型计算机基础知识241.2原码、补码、反码及其相应的运算法则25000110013200100000+3200100000+(-)251110011157001110011000001112500011001-2511100111+(-)3211100000+(-)3211100000-711111001-57111000111进位丢失,但不影响结果的正确第一章微型计算机基础知识251.2原码、补码、反码及其相应的运算法则250001100100011