LOGO长沙职业技术学院单片机应用技术CompanyLogo第一章单片机概述1.1单片机简介1.2单片机的应用领域1.3单片机的发展趋势1.4单片机的类别1.5单片机系统基础知识(补充)CompanyLogo一、原码、反码与补码在计算机中,为了运算的方便,数的最高位用来表示正、负数。最高位为“0”表示正数,最高位为“1”表示负数。为了区别原来的数与它在计算机中的表示形式,我们将已经数码化了的带符号数称为机器数。而把原来的数称为机器数的真值。D7D6D5D4D3D2D1D0符号数值CompanyLogo机器数有三种表示方法:原码、反码、补码。1.原码在符号位用0表示正数,在符号位用l表示负数,而数值位保持原样的数,这样的机器数称为原码。(1)正数正数的原码与原来的数相同。(2)负数负数的原码为符号位置1,而数值位不变。(3)0的原码表示0的原码表示法有两种,即正0和负0。[+0]原=00000000[-0]原=10000000CompanyLogo【例】X1=+1010110X2=一1001010其原码记作:[X1]原=[+1010110]原=01010110[X2]原=[-1001010]原=11001010CompanyLogo【例】求+67、-25的原码(机器字长8位)。67=1000011B25=11001B[+67]原=01000011B[-25]原=10011001BCompanyLogo原码表示数的范围与二进制位数有关。当用8位二进制来表示小数原码时,表示范围:最大值为0.1111111,其真值约为(0.99)10最小值为1.1111111,其真值约为(一0.99)10当用8位二进制来表示整数原码时,表示范围:最大值为01111111,其真值为(127)10最小值为11111111,其真值为(-127)10CompanyLogo小结:原码:用最高位表示符号位,数值部分为其真值的绝对值。若为“0”:代表正数;若为“1”:代表负数。二进制(真值):+1110101−0000101原码:01110101100001018位原码表示整数的范围:−127~+127。优缺点:简单、转换方便,但加减运算不便。CompanyLogo2.反码(1)正数正数的反码与正数的原码相同。(2)负数负数的反码为数值位的值按位求反,符号位取“1”(不变)。(3)0的反码表示0在反码中也有两种表示法,正0和负0。[+0]反=00000000[-0]反=11111111CompanyLogo【例】求+67、-25的反码(机器字长8位)[+67]原=01000011B[-25]原=10011001B[+67]反=01000011B[-25]反=11100110BCompanyLogo小结:反码:对正数,为其原码本身;对负数,其反码为:除符号位外,逐位取反所得到的结果。二进制(真值):+1011−1011原码:0101111011反码:01011101008位反码表示数的范围:−127~+127。优缺点:运算也不方便。CompanyLogo(1)正数正数的补码与正数的原码相同。(2)负数负数的补码由它的绝对值求反加1后得到。(3)0的补码表示0的补码表示只有一种,其表达式为:[+0]补=[-0]补=00000000B补码的加法规则是:[X+Y]补=[X]补+[Y]补补码的减法规则是:[X-Y]补=[X]补+[-Y]补3.补码CompanyLogo例.已知[X]原=10011010,求[X]补。分析如下:由[X]原求[X]补的原则是:若机器数为正数,则[X]原=[X]补;若机器数为负数,则该机器数的补码可对它的原码(符号位除外)所有位求反,再在未位加1而得到。现给定的机器数为负数,故有[X]补=[X]反十1,即[X]原=10011010[X]反=11100101[X]补=11100110CompanyLogo【例】求+67、-25的补码(机器字长8位)。因为[+67]原=01000011B[-25]原=10011001B所以[+67]补=01000011B[-25]补=11100111B[+67]反=01000011B[-25]反=11100110BCompanyLogo例.已知[X]补=11100110,求[X]原。分析如下:对于机器数为正数,则[X]原=[X]补对于机器数为负数,则有[X]原=[[X]补]补现给定的为负数,故有:[X]补=11100110[[X]补]反=10011001[[X]补]补=10011010=[X]原CompanyLogo补码表示数的范围与二进制位数有关。当采用8位二进制表示时,小数补码的表示范围:最大为0.1111111,其真值为(0.99)10最小为1.0000000,其真值为(一1)10采用8位二进制表示时,整数补码的表示范围:最大为01111111,其真值为(127)10最小为10000000,其真值为(一128)10CompanyLogo在补码表示法中,0只有一种表示形式:[+0]补=00000000[+0]补=11111111+1=00000000(由于受设备字长的限制,最后的进位丢失)所以有[+0]补=[+0]补=00000000CompanyLogo小结:补码:正数的补码与其原码相同;负数的补码被定义为其反码加1。二进制(真值):+1001−10110原码:01001110110反码:01001101001补码:010011010108位补码表示数的范围:−128~+127。优缺点:可方便地实现正、负数的加法运算。CompanyLogo补码运算举例:求十进制数76-28的运算76的2进制是0100110028的2进制是00011100-28的补码是11100100762848-0100110011100100+00110000补码CompanyLogo补码运算举例2:求十进制数36-52的运算365216-0010010011001100+11110000-补码CompanyLogo【练习】假设计算机字长为8位,完成下列补码运算。1.25+322.25+(-32)3.25-324.25-(-32)CompanyLogo二、计算机中常用的编码1.BCD(8421)码采用二进制数对每一位十进制数字编码,这种编码方式称为BCD码(BinarycodedDecimalCode)。表1-2十进制与二进制的对照十进制BCD码十进制BCD码00000501011000160110200107011130011810004010091001CompanyLogo2.ASCⅡ码ASCⅡ编码表(AmericanstandardCodeforinformationinterchange美国信息交换标准代码)ASCⅡ码用7位二进制数表示,可表达128个字符,其中包括数码0~9,英文大小写字母,标点符号和控制字符。7位ASCⅡ码分成二组:高3位一组,低4位一组,分别表示这些符号的列序和行序,ASCⅡ码的分组如图所示。CompanyLogoCompanyLogo【答案】1.25+32[25]补=00011001B[32]补=00100000B[25]补=00011001+[32]补=0010000000111001所以[25+32]补=[25]补+[32]补=00111001B=[57]补2.25+(-32)[25]补=00011001B[-32]补=11100000B[25]补=00011001+[-32]补=1110000011111001所以[25+(-32)]补=[25]补+[-32]补=11111001B=[-7]补CompanyLogo3.25-32[25]补=00011001B[-32]补=11100000B[25]补=00011001+[-32]补=1110000011111001所以[25-32]补=[25]补+[-32]补=11111001B=[-7]补4.25-(-32)[25]补=00011001B[32]补=00100000B[25]补=00011001+[32]补=0010000000111001所以[25-(-32)]补=[25]补+[32]补=00111001B=[57]补CompanyLogo习题1.将下列一组二进制数转换成十进制数。(1)10011100B(2)110001101001B(3)1001101000110110B2.求下列一组数字的原码、反码、补码。(1)86(2)116(3)-34(4)-79CompanyLogoTakeaRest