微型计算机原理及应用第一章基础知识•一、常用记数制•十进制——符合人们的习惯•二进制——便于物理实现•十六进制——便于识别、书写•八进制•进制数的基本概念(十进制为例)数码:用一系列数字符号表示数,数字符号称为数码。十进制的数码:0123….9共10个基数:数制中数码的个数。十进制数有十个数码,基数就是10权:同一个数码在不同的位置上,代表的值是不同的,某一位代表的数值称为权。十进制123:分个位、十位、百位规则:逢十进一•~9十个数字符号。任何一个十进制数D,都可用权展开式表示。inmiimmnnnnDDDDDDDD10101010101010)(111001122111010i称为十进制的权。[例1-1]十进制数3256.87可表示为21012310107108106105102103)87.3256(•[例1-2]二进制数1010.11可表示为2101232212120212021)11.1010(2.二进制数二进制数只有0和1两个数字符号,“逢二进一”。任何一个二进制数B,都可用权展开式表示。inmiimmnnnnBBBBBBBB2222222)(111001122112其中,Bi只能取0或1,n和m为正整数,n表示小数点左边的位数,m表示小数点右边的位数,2为基数,2i称为二进制的权。•[例1-3]十六进制数2AE.4可表示为101221641616162)4.2(EAAE3.十六进制数十六进制数有10个数字符号,0~9和A~F“逢十六进一”。任何一个十六制数H,都可用权展开式表示。inmiimmnnnnHHHHHHHH16161616161616)(1110011221116其中,Hi的取值在0~F的范围内,n和m为正整数,n表示小数点左边的位数,m表示小数点右边的位数,16为基数,16i称为十六进制的权。••非十进制数到十进制数的转换非十进制数转换为十进制数的时,只要将它们按相应的权表达式展开,再按十进制运算规则求和,即可得到它们对应的十进制数。2.十进制数到非十进制数的转换(1)十进制数转换为二进制数十进制整数和小数部分应分别进行转换。整数部分转换为二进制数时采用“除2取余”的方法。即连续除以2并取余数作为结果,直至商为0,得到的余数从低位到高位依次排列即得到转换后二进制数的整数部分;对小数部分则用“乘2取整”的方法。即对小数部分连续用2乘,以最先得到的乘积的整数部分为最高位,直至达到所要求的精度或小数部分为零为止。二、各种数制之间的转换•整数部分转换为二进制数时采用“除16取余”的方法;小数部分则用“乘16取整”的方法。[例1-4]将十进制数(34.25)10转换为等值的二进制数和十六进制数。二进制:整数:小数:0.25*2=0.5,取整:0;0.5*2=1,取整:1。因此:(34.25)10=(100010.01)2取余数222121000240342170281(2)十进制数转换为十六进制数逆取余;顺取整•从小数点开始分别向左和向右把整数和小数部分每四位分为一组。若整数最高位的一组不足4位,则在左边补零;若小数最低位的一组不足4位,则在右边补零。然后将每组二进制数用对应的十六进制数代替,则得到转换结果。3.二进制数与十六进制数之间的转换•三、如何区分不同进位记数制的数字在数字后面加一个字母进行区分:–二进制:数字后面加B,如1001B–十进制:一般不加,如1001–十六进制:数字后面加H,如1001H•16进制数以字母开头,书写时前加0.比如0A9BCH•四、二进制编码(一)十进制数的二进制编码——BCD码(Binarycodeddecinal)•用二进制数对十进制数编码:用4位二进制数表示一位十进制数。有两种表示法:压缩BCD码和非压缩BCD码。•压缩BCD码的每一位用4位二进制表示,0000~1001表示0~9,一个字节表示两位十进制数。•非压缩BCD码用一个字节表示一位十进制数,高4位总是0000,低4位的0000~1001表示0~9。•码:和它的二进制形式一样00000001001000110100010101100111100010010123456789二位数的BCD码:和它的二进制形式不一样10的BCD码:00010000BCD10的二进制表示:1010B••计算机中除了能够处理数值数据以外,还可以处理文字、语音、图像等各种信息,这些信息统称为非数值数据。•非数值数据在计算机中也必须以二进制形式表示,非数值数据的表示本质上是编码的过程。•最常用的数据编码:美国标准信息交换代码(AmericanStandardCodeforInformationInterchange,ASCII码)(见下页ASCII编码表,教材中的附录A)(二)非数值数据的编码ASCII码•码—美国标准信息交换代码ASCII字符表0000010100111001011101110000NULDLESP0@P`p0001SOHDC1!1AQaq0010STXDC22BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENGNAK%5EUeu0110ACKSYN&6FVfv0111BELETB'7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,L\l|1101CRGS-=M]m}1110SORS.Nn~1111SIUS/?OoDEL注:H表示高3位,L表示低4位。HL•,它可表示的数的范围为0≤X≤2n-12.无符号二进制数的溢出判断令无符号二进制数加法(或减法)中最高有效位Di有效的进位为Ci,则两个无符号二进制数相加(或相减)时,若最高有效位Di产生进位(或相减有借位),即Ci=1,则产生溢出。•机器数:在计算机中,一个数连同它的符号位都用二进制码来表示,这种数就是机器数。真值:一个机器数对应的十进制数值,称为这个机器数的真值。符号数的表示方法一个有符号数的最高位代表符号,该位为“0”表示正,该位为“1”表示负。[例1-18]+0010101B在计算机中可表示为00010101,即十进制数的+21-0010101B在计算机中可表示为10010101,即十进制数的-21•的原码记为[X]原。在原码表示法中,不论数的正负,数值部分均保持原真值不变。[X]原=00011000B[X]真值=+24[X]原=00011000B[X]真值=+24[X]原=10011000B[X]真值=-24[例1-19]已知真值X=+42,Y=-42,求[X]原和[Y]原。[X]原=00101010[Y]原=10101010[+0]原=00000000,[-0]原=10000000缺点:计算10-9与9-10看结果会怎么样?•的反码记为[X]反。在对正数来讲,其表示方法同原码。对负数而言,其反码的数值部分为真值的各位按位取反。[例1-20]已知真值X=+42,Y=-42,求[X]反和[Y]反。[X]反=00101010[Y]反=11010101[例1-20][X]反=11010111B,那么这个这个数的真值是?。[X]真=[+0]反=00000000[-0]反=11111111缺点:•111202202nnnnXXXXXX补真值X的补码记为[X]补。在对正数来讲,其表示方法同原码。对负数而言,其补码表示的数值部分为真值的各位按位取反再加1。[例1-21]已知真值X=+0110100,Y=-0110100,求[X]补和[Y]补。因X0,所以有[X]补=00110100而Y0,所以有[Y]补=[Y]反+1=11001100[+0]补=[+0]反=[+0]原=00000000[-0]补=[-0]反+1=000000003.补码[X]原=[X]补取反+1•[例1-20]求机器数10010111的真值。[两个原则:没有明确是无符号数,就默认为有符号数。没有明确是什么码,均以补码的形式出现。一个机器数出现的时候,它可能是一个真值的三种码:原码、反码和补码,那这个机器数到底是哪种码呢?•补码相加:X=11-6=5[X]补=[11]补+[-6]补00001011=00001011+11111010+11111010=00000101[1]00000101补码的扩展:符号位的值扩展到高八位上。数值八位表示十六位表示+100000001B0000000000000001B-111111111B1111111111111111B采用补码的好处:利用同一个加法电路实现减法运算0有唯一表示方法计算结果容易还原为真值送给显示器:只需取反+1•