第1章计算机基础知识课程名称:微机原理与接口技术Principle&InterfaceofMicrocomputer授课教师:程远楚武汉大学动力与机械学院教学目的补充必要的基本知识,如数制、编码等知识,为后面的学习作准备。教学目的第1章学习要求1.掌握数制及其转换,补码运算、ASCII码、BCD码二、十转换,二、十六进制转换二进制运算的加法/减法电路2.熟悉计算机数制中二进制、十六进制、十进制的制式及转换二进制的原码、反码和补码,及其在8位和16位字长下的范围3.了解ASCII码及数字和大写字母A~Z的ASCII码表述第1章计算机基础知识1.1数制1.1.1数制的基本概念数制是人们利用符号来记数的科学方法.数制可以有很多种,计算机科学中经常使用的数制有十进制、二进制、八进制和十六进制。数制的基与权:基:数制所使用的数码的个数权:数制每一位所具有的值第1章计算机基础知识(1)十进制(decimalsystem):有十个数码0~9、逢十进一。十进制是人们最熟悉的计数体制。(2)二进制(binarysystem):两个数码:0、1,逢二进一。二进制为计算机中的数据表示形式。(3)八进制(octavesystem)有八个数码0~7、逢八进一。(4)十六进制(hexadecimalsystem)十六个数码:0~9,A~F,逢十六进一。八进制和十六进制能够简化二进制数的表示。不同进位制数以下标或后缀区别,十进制数可不带下标。如:101、101D、101B、101O、101H十进制数据表达式例1234.5=1×103+2×102+3×101+4×100+5×10-1加权展开式以10为基数,各位系数为0~9。一般表达式:ND=dn-1×10n-1+dn-2×10n-2+…+d0×100+d-1×10-1+…二进制数据表达式例1101.101=1×23+1×22+0×21+1×20+1×2-1+1×2-3加权展开式以2为基数,各位系数为0、1。一般表达式:NB=bn-1×2n-1+bn-2×2n-2+…+b0×20+b-1×2-1+…第1章计算机基础知识十六进制数据表达式例:DFC.8=13×162+15×161+12×160+8×16-1展开式以16为基数,各位系数为0~9,A~F。一般表达式:NH=hn-1×16n-1+hn-2×16n-2+…+h0×160+h-1×16-1+…八进制数据表达式例:462.7=4×82+6×81+2×80+7×8-1展开式以8为基数,各位系数为0~7。一般表达式:NO=on-1×8n-1+on-2×8n-2+…+o0×80+o-1×8-1+…第1章计算机基础知识进位计数制的一般表达式:an-1an-2…a1a0●a-1…a-m=an-1×rn-1+an-2×rn-2+…+a1×r1+a0×r0+a-1×r-1+…+a-m×r-m其中:r称为数制的基,rn-1、rn-2、…、r1、r0、r-1、…、r-m称为各位的权,an-1、an-2、…、a1、a0、a-1、…、a-m称为各位的系数。第1章计算机基础知识第1章计算机基础知识1.1.2数制之间的转换1、二进制数和八进制数、十六进制数间的转换(1)、二进制数到八进制数、十六进制数的转换A、二进制数到八进制数转换采用“三位化一位”的方法。从小数点开始向两边分别进行每三位分一组,向左不足三位的,从左边补0;向右不足三位的,从右边补0。B、二进制数到十六进制数的转换采用“四位化一位”的方法。从小数点开始向两边分别进行每四位分一组,向左不足四位的,从左边补0;向右不足四位的,从右边补0。例:将(1000110.01)B转换为八进制数和十六进制数。转换为八进制数:1000110.01=001000110.010(106.2)o转换为十六进制数:1000110.01=01000110.0100(46.4)H第1章计算机基础知识(2)、八进制、十六进制数到二进制数的转换方法:采用“一位化三位(四位)”的方法。按顺序写出每位八进制(十六进制)数对应的二进制数,所得结果即为相应的二进制数。例:将(352.6)o转换为二进制数。352.6011101010.110=(11101010.11)B例:将(3AF.2)H转换为二进制数。3AF.2001110101111.0010=1110101111.001B第1章计算机基础知识1.1.2数制之间的转换2、二进制数、八进制数、十六进制数与十进制数制间的转换(1)二、八、十六进制数转换成十进制数各位的系数乘以各位的权,然后全部加起来。举例: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.5637.4o=6×82+3×81+7×80+4×8-1=415.5第1章计算机基础知识1.1.2数制之间的转换2、二进制数、八进制数、十六进制数与十进制数制间的转换(2)十进制数转换成二、八、十六进制数方法1:A、将整数部分和小数部分分别进行转换,然后再把转换结果进行相加。B、整数转换采用“除基取余”法:十进制整数不断除以转换进制基数,直至商为0。再将每一步所得的余数,按从低位排向高位逆序排列,便可得转换结果。C、小数转换采用“乘基取整”法:每次用基与小数部分相乘,取乘积的整数部分,再取其小数部分乘基直到小数部分为0。将所取整数顺序放在小数点后即为转换结果。第1章计算机基础知识1.1.2数制之间的转换2、二进制数、八进制数、十六进制数与十进制数制间的转换(2)十进制数转换成二、八、十六进制数整数转换示例例题1:39转换成二进制数39=100111B低位2391(b0)2191(b1)291(b2)240(b3)220(b4)211(b5)0高位例题2:208转换成十六进制数208=D0H16208余01613余13=DH0小数转换示例例1:0.625转换成二进制数0.625×21.251(b-1)高位×20.500(b-2)0.50×21.001(b-3)低位所以0.625=0.101B第1章计算机基础知识第1章计算机基础知识例2:0.625转换成十六进制数0.625×16=10.00.625=0.AH例3:208.625转换成十六进制数208.625=D0.AH方法2:(十进制数转换为二进制数)降幂法:首先写出要转换的十进制数,其次写出所有小于此数的各位二进制数值,然后用要转换的十进制数减去与它最相近的的二进制权值,够减则此位记为1,否则记为0,如此反复。如:N=123.8125D小于123的二进制权2625242322212064321684211235927113311111011小于0.8125小数部分的二进制权2-12-22-32-40.50.250.1250.06250.81250.31250.06250.06251101所以:123.8125D=1111011.1101B注意事项:(1)一个二进制数可以准确地转换为十进制数。(2)任何一个十进制整数可以由二进制或十六进制数准确表示。(3)一个带小数的十进制数不一定能够准确地用二进制数来表示,此时只能根据精度的要求取足够的位数。带小数的十进制数在转换为二进制数时,以小数点为界,整数和小数要分别转换。第1章计算机基础知识1.1.3二进制数值数据的编码方法1、基本概念:无符号数、有符号数、机器数、真值。机器中,数的符号用“0”、“1”表示,最高位作符号位,“0”表示“+”,“1”表示“-”。机器数:机器中数的表示形式,其位数通常为8的倍数。真值:机器数所代表的实际数值。举例:一个8位机器数与它的真值对应关系如下:真值:X1=+84=+1010100BX2=-84=-1010100B机器数:[X1]机=01010100[X2]机=11010100第1章计算机基础知识1.1.3二进制数值数据的编码方法2.无符号数对于8位二进制数,若是无符号数,数值的表示范围为:0~255(0~FF)H对于16位二进制数,若是无符号数,数值的表示范围为:0~65535(0~FFFF)H3.有符号数为表示有符号数,用最高位表示符号:1-负数0-正数对于8位二进制数:符号位数值位数值表示范围视表示方法不同而有所不同.D7D6D5D4D3D2D1D0第1章计算机基础知识带符号数的表示有符号数通常使用三种表示方法:原码、反码和补码。(1).原码除符号位外,数值位保持原样的机器数称为原码.范围:-127~1274=(00000100)B-4=(10000100)B(10000000)B为负0,(00000000)B为正0(2).反码正数的反码表示与正数的原码相同,负数的反码由其绝对值按位求反后得到.范围:-127~1274=(00000100)B-4=(11111011)B(11111111)B为负0,(00000000)B为正0第1章计算机基础知识带符号数的表示(3).补码正数的补码表示与正数的原码相同,负数的补码由其绝对值按位求反后加1得到.4=(00000100)B-4=(11111100)B(00000000)B为0补码的特点:①8位二进制补码的表示范围:-128~127②正0与负0的表示方法相同③正数补码的符号位为0,负数补码的符号位为1④对负数补码求反加1,回复该数的绝对值⑤采用补码后,可以将减法运算转换成加法运算如:99-58=99+(-58)=(01100011)B+(11000110)B=(000100101001)=41由2中反码加1,逢2进1算出8位机器数有符号数十六进制二进制无符号数原码反码补码0001…7F80…FEFF0000000000000001…0111111110000000…111111101111111101…127128…254255+0+1…+127-0…-126-127+0+1…+127-127…-1-0+0+1…+127-128…-2-1第1章计算机基础知识1.1.3二进制数值数据的编码方法(4)8位机器数表示的真值:第1章计算机基础知识1.1.3二进制数值数据的编码方法(5)各种编码方法的表数范围:n+1位二进制编码x表示的整数范围:原码、反码:-2n<x<2n补码:-2n≤x<2n例如:8位原码、反码的表数范围是-127~+127,补码的表数范围是-128~+127;16位原码、反码的表数范围是-32767~+32767,补码的表数范围是-32768~+32767(6)各种编码之间的相互转换:[x]原[x]补:x≥0,[x]补=[x]原;x<0,符号位不变,数值位取反+1。例1:[X1]原=01111111=7FH,[X1]补=01111111=7FH[X2]原=11111111=FFH,[X2]补=10000001=81H例2:[X1]原=59H,[X2]原=D9H,求真值?X1=+1011001B=+89X2=-1011001B=-89例3:[X1]补=59H,[X2]补=D9H,求真值?X1=+1011001B=+89X2=-0100111B=-392(2)中为例,这种题很简单,先D9转成十进制为217,再累除法得到11011001,这本就是答案,但第一位表+-,故结果为-1011001,换十进制为89(你可能奇怪为什么不直接十六转二进制为结果,因为这种机器表达为二进制,必须全部转为二进制为中介)2(1)中第一步转二进制时结果为1011001,表其为正,实为01011001第1章计算机基础知识1.1.3二进制数值数据的编码方法原码、反码、补码表示小结:正数的原码、反码、补码表示均相同,符号位为0,数值位同数的真值。零的原码和反码均有2个编码,补码只有1个编码。负数的原码、反码、补码表示均不同,符号位为1,数值位:原码为数的绝对值反码为每一位均取反码补码为反码再在最低位+1由[X]补求[-X]补:每一位取反后,再在最低位+1第1章计算机基础知识1.1.4其它编码1.汉字编