1第一章计算机基础知识1.1数与数制1.2十进制数与字符的编码表示1.3二进制算术运算1.4符号数的表示及其运算内容提要:21.1数与数制一、计算机中的数制:计数方法。十进制——符合人们的习惯二进制——便于物理实现十六进制——便于识别、书写八进制31、进位计数制的一般表示一般地,对任意一个K进制数S都可表示为120n120111()nnknmmniiimSSKSKSKSKSKSK其中:Si--S的第i位数码,可以是K个符号中任何一个;n,m–整数和小数的位数;K--基数;Ki--K进制数的权4例:84211(D)=8×104+4×103+2×102+1×101+1×10074211Q(O)=7×84+4×83+2×82+1×81+1×8084214H=8×164+4×163+2×162+1×161+4×160基分别为10、8、16。其中十六进制的数码分别为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。计算机中最常用的是二进制。如:1101B=1×23+1×22+0×21+1×20=13使用二进制的优点:易实现、易存储、抗干扰性强、可靠性高。运算规则简单。52、如何区分不同进位记数制的数字•在数字后面加一个字母进行区分:–二进制:数字后面加B,如1001B–八进制:数字后面加O,如1001O–十进制:一般不加,如1001–十六进制:数字后面加H,如1001H在明显可以区分其记数制的情况下,可以省略数字后面的字母6二、各种数制之间的转换:1、各种进位制转十进制:一般采用加权法,即按权值展开为多项式的和的形式。例:101101.11B=1×25+0×24+1×23+1×22+0×21+1×20+1×2-1+1×2-2=45.75(D)7十进制→二进制的转换:整数部分:除2取余;小数部分:乘2取整。以小数点为起点求得整数和小数的各个位。2、十进制转二进制的方法:8(1)整数采用除基取余法。(S)10=(Kn-1Kn-2Kn-3、、、K1K0)2=Kn-1*2n-1+Kn-2*2n-2+、、、+K1*21+K0*20S/2=(Kn-1*2n-2+Kn-2*2n-3+、、、+K1)+K0/2例:将十进制数175转换为二进制数,其过程如下:9175÷2=87余数为187÷2=43143÷2=21121÷2=10110÷2=505÷2=212÷2=101÷2=01得到结果:175=10101111B169=?10101001B10(2)小数采用乘基取整法:例:0.625×2=1.25K-1=10.25×2=0.50K-2=00.50×2=1.00K-3=1所以0.625=(0.101)2注意:如果乘积小数始终不为0,则二进制小数有无穷多位。0.71875=(0.10111)2(3)十进制转其他任意进制:与十转二方法类似。但可以经二进制中转。11(4)二进制、八进制、十六进制之间互转:例:将101011B转八进制和十六进制。(101,011)2=(53)8(0010,1011)2=2BH(712.46)8=?(111001010.100110)21,1101,0100,1011,0111.0101,1110,1010)2=?(1D4B7.5EA)16121.2十进制数与字符的编码表示一、BCD码转换十进制数为其等值的二进制数称之为编码。前面所提到的二进制数称为纯二进制码。微处理器只能识别用高低电平表示的0或1。13表1.1BCD码与其它数制的对应关系1415根据上述说明,一个十进制数,能够很方便地用BCD码来表示。例如,十进制数834用BCD码表示为(834)10=(100000110100)BCD只要熟记十进制数0~9与BCD码的对应关系则它们之间的相互转换是十分方便的。例:(011010010101.001001111001)BCD=(695.279)1016二、ASCII码ASCII码是美国标准信息交换码的简称,现在为各国所广泛采用。通常,ASCII码由7位二进制编码来表示,用于微处理机与它的外部设备之间进行数据交换以及通过无线或有线进行数据传送。17代表字符或控制功能的ASCII码是由一个4位组和一个3位组构成的,形成7位二进制编码,其格式为65432103位组4位组18根据ASCII码的构成格式,可以很方便地从附录A中ASCII表查出每一个字符或特殊控制功能的编码。例:大写英文字母A从表中查出其3位组为(100)2,4位组为(0001)2,故构成字母A的ASCII编码为(1000001)2或(41)16。191.3二进制算术运算包括:加法运算减法运算乘法运算除法运算20一、二进制加法二进制加法与十进制加法相类似,所不同的是,二进制加法中是“逢二进一”,其法则为0+0=01+0=10+1=11+1=0并进位21例:两个二进制数相加:10110101+1000111010100001122二、二进制减法在二进制减法中,同样有如下法则:0-0=01-0=11-1=00-1=1有借位当不够减时需要借位,高位的1等于下一位的2,即“借一当二”。23例:两个二进制数相减:10110100-010101110101110124三、二进制乘法二进制乘法与十进制乘法是一样的。但因为二进制数只由0和1构成,因此,二进制乘法更简单。其法则如下:0×0=01×0=00×1=01×1=125例:二进制数1101.1与101.1相乘:1101.1被乘数(13.5)10×101.1乘数(5.5)10110111101100000+110111001010.01乘积(74.25)1026四、二进制除法二进制除法是乘法的逆运算,其方法与十进制除法是一样的,而且二进制数仅由0,1构成,做起来更简单。例:求二进制数100111除以110的商。27110.1110100111110111110110110028五、无符号数的表示范围一个n位的无符号二进制数X,其表示范围为0≤X≤2n-1若运算结果超出这个范围,则产生溢出。(或者说运算结果超出n位,则产生溢出)判别方法:运算时,当最高位向更高位有进位(或借位)时则产生溢出。291.4符号数的表示及其运算一、机器数和真值:在计算机中连同符号位一起数字化了的数称为机器数,机器数的数值为真值。通常数码最高位为符号位,0表示“+”,1表示“-”。二、符号数的表示方法表示一个带符号的二进制数有3种方法。301.原码:最高位为符号位,后面各位为其数值。8位原码表示范围:11111111——01111111即(-127~+127)8位无符号数可以表示范围:(0~255)0的原码有两种形式。31真值X=+18=+0010010X=-18=-0010010X=+0=+0000000X=-0=-0000000符号原码[X]原=00010010[X]原=10010010[X]原[X]原=00000000=10000000符号位322、反码:在计算机的早期,曾采用反码法来表示带符号的数。正数的反码与原码相同,负数的反码符号位保持不变,其余各位取反。例:+127=(01111111)原=(01111111)反-127=(11111111)原=(10000000)反注意:[X]原=[[X]反]反33n位反码表示数值的范围:-(2n-1-1)~+(2n-1-1)8位反码表示范围:1000~0111,即-127~+127。0的反码有两种形式。34真值X=+18=+0010010X=-18=-0010010X=+0=+0000000X=-0=-0000000符号反码[X]反=00010010[X]反=11101101[X]反[X]反=00000000=11111111符号位353、补码:补码是计算机中最常用的数据表示形式。[X]补=M+X其中模M是指一个计数装置的计数范围。其大小等于以进位计数制基数为底,以位数为指数的幂。凡是用器件进行的运算都是有模运算,运算结果超过模的部分被运算器自动丢弃。36正数的补码为其本身,负数的补码为保持符号位不变,其余位按位取反,然后加1。即[X]补=M—|X|。例:计算机字长为八位,设机器数的真值为X=(-1011011)。求其补码。解:8位二进制数的模为28[X]补=(100000000)-(1011011)=10100101[X]反=1010010037对补码应注意以下几个问题:符号位与原码相同。补码中只有一种0的表示,即00000000。补码中10000000表示-128。所以补码表示范围为-128至+127。38真值X=+18=+0010010X=-18=-0010010X=+0=+0000000X=-0=-0000000符号补码[X]补=00010010[X]补=11101110[X]补[X]补=00000000=00000000符号位39三、数的定点和浮点表示法:1、定点表示法:定点整数和定点小数。2、浮点表示法:定点小数符号位定点整数X0X1X2X3、、、、、、、、、、Xn尾符阶符E0E1E2、、、、、M0M1M2、、、、Mm40数N被分为阶码(指数)和尾数(数值)两部分。我们把用阶码和尾数表示的数叫做浮点数,这种表示数的方法称为浮点表示法。阶码采用定点整数(补码),尾数采用定点小数(原码或补码),最高位均为符号位。即:N=2E×M,这样,固定字长的存储单元的表示范围和分辨率得以提高。为了尽可能保留有效数字的位数,浮点数通常采用规格化表示法。41规格化浮点数:保证小数点后第一位不为0,以保证最大的精度。例:写出-0.0001011的规格化浮点数形式,阶码取2位补码,阶符占一位,尾数取4位补码,尾符占一位,共8位。解:-0.0001011=2-11(-0.1011)其在计算机中的存放方式如下:1011010142四、补码的加减法运算:1、补码的定点加法:(1)定点小数加法[X]补+[Y]补=[X+Y]补运算时符号位取两位,正数取00,负数取11,目的是判断计算结果的溢出。例1:X=0.110001,Y=0.001001求[X+Y]补。43解:[X]补=00.110001,[Y]补=00.001001[X+Y]补=00.111010例2:X=0.110001,Y=-0.001001求[X+Y]补。(2)溢出与判断:定点小数的表示范围:1X≥-1结果超出此范围即溢出。例3:00.10110111.00101100.10010111.01001101.01001010.011110上溢下溢44另一种判断方法:采用单符号位令V=D7C⊕D6CV=1,有溢出;V=0,无溢出。(3)浮点数加法对阶尾数相加溢出由阶码决定。规格化452、减法运算:在微处理器中,一般都不设置专门的减法电路。遇到两个数相减时,处理器就自动地将减数取补,而后将被减数和减数的补码相加来完成减法运算。[X-Y]补=[X]补+[-Y]补例:64-10=?46计算机中实现过程11110101+111110110+010000000011011001000000B-00001010B47作业:1、将下列十进制数转换为二进制数和十六进制数。二进制取小数点后按0舍1入方法取8位。(1)1024(2)0.2(3)18.6922、已知[X]原=10011011是定点纯小数,写出X的规格化浮点数形式,设其阶码是4位补码,尾数是8位原码(含符号位)。3、已知[X]补,[Y]补;求[X+Y]补,判断是否有溢出,确定是上溢还是下溢。(1)[X]补=0.11011[Y]补=0.10111(2)[X]补=0.10101[Y]补=0.10011(3)[X]补=0.11011[Y]补=1.01101