您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第1章--单片机-预备知识(数制与码制)
第1章预备知识(数制与码制)第1章预备知识(数制与码制)1.1进位计数制及各计数制间的转换1.2二进制数的运算1.3带符号数的表示方法——原码、反码、补码1.4定点数与浮点数1.5BCD码和ASCII码第1章预备知识(数制与码制)1.1进位计数制及各计数制间的转换数制是人们对事物数量计数的一种统计规律。在日常生活中最常用的是十进制,但在计算机中,由于其电气元件最易实现的是两种稳定状态:器件的“开”与“关”;电平的“高”与“低”。因此,采用二进制数的“0”和“1”可以很方便地表示机内的数据运算与存储。在编程时,为了方便阅读和书写,人们还经常用八进制数或十六进制来表示二进制数。虽然一个数可以用不同计数制形式表示它的大小,但该数的量值则是相等的。第1章预备知识(数制与码制)1.1.1进位计数制当进位计数制采用位置表示法时,同一数字在不同的数位所代表的数值是不同的。每一种进位计数应包含两个基本的因素:(1)基数R(Radix):它代表计数制中所用到的数码个数。如:二进制计数中用到0和1两个数码;而八进制计数中用到0~7共八个数码。一般地说,基数为R的计数制(简称R进制)中,包含0、1、…、R-1个数码,进位规律为“逢R进1”。第1章预备知识(数制与码制)(2)位权W(Weight):进位计数制中,某个数位的值是由这一位的数码值乘以处在这一位的固定常数决定的,通常把这一固定常数称之为位权值,简称位权。各位的位权是以R为底的幂。如十进制数基数R=10,则个位、十位、百位上的位权分别为100,101,102。一个R进制数N,可以用以下两种形式表示:(1)并列表示法,或称位置计数法:(N)R=(Kn-1Kn-2…K1K0K-1K-2…K-m)R第1章预备知识(数制与码制)(2)多项式表示法,或称以权展开式:(N)R=Kn-1Rn-1+Kn-2Rn-2+…+K1R1+K0R0+K-1R-1+…+K-mR-m=其中:m、n为正整数,n代表整数部分的位数;m代表小数部分的位数;Ki代表R进制中的任一个数码,0≤Ki≤R-1。1.二进制数二进制数,R=2,Ki取0或1,进位规律为“逢2进1”。任一个二进制数N可表示为:1miiinKR第1章预备知识(数制与码制)(N)2=Kn-12n-1+Kn-22n-2+…+K121+K020+K-12-1+…+K-m2-m(1―1)例如:(1001.101)2=1×23+0×22+0×21+1×20+1×2-1+0×2-22.八进制数八进制,R=8,Ki可取0~7共8个数码中的任意1个,进位规律为“逢8进1”。任意一个八进制数N可以表示为:(N)8=Kn-18n-1+Kn-28n-2+…+K181+K080+K-18-1+…+K-m8-m(1―2)例如:(246.12)8=2×82+4×81+6×80+1×8-1+2×8-2第1章预备知识(数制与码制)3.十六进制数十六进制数,R=16,Ki可取0~15共16个数码中的任一个,但10~15分别用A、B、C、D、E、F表示,进位规律为“逢16进1”。任意一个十六进制数N可表示为:(N)16=Kn-116n-1+Kn-216n-2+…+K1161+K0160+K-116-1+…+K-m16–m(1―3)例如:(2D07.A)16=2×163+13×162+0×161+7×160+10×16-1第1章预备知识(数制与码制)表1―1给出了以上3种进制数与十进制数的对应关系。为避免混淆,除用(N)R的方法区分不同进制数外,还常用数字后加字母作为标注。其中字母B(Binary)表示二进制数;字母Q(Octal的缩写为字母O,为区别数字0故写成Q)表示八进制数;字母D(Decimal)或不加字母表示十进制数;字母H(Hexadecimal)表示十六进制数。第1章预备知识(数制与码制)表1―1二、八、十、十六进制数码对应表第1章预备知识(数制与码制)1.1.2各种进制数间的相互转换1.各种进制数转换成十进制数各种进制数转换成十进制数的方法是:将各进制数先按权展成多项式,再利用十进制运算法则求和,即可得到该数对应的十进制数。例1:将数1001.101B,246.12Q,2D07.AH转换为十进制数。1001.101B=1×23+0×22+0×21+1×20+1×21+0×2-2+1×2-3=8+1+0.5+0.125=9.625第1章预备知识(数制与码制)246.12Q=2×82+4×81+6×80+1×8-1+2×8-2=128+32+6+0.125+0.03125=166.156252D07.AH=2×163+13×162+0×161+7×160+10×16-1=8192+3328+7+0.625=11527.625第1章预备知识(数制与码制)2.十进制数转换为二、八、十六进制数任一十进制数N转换成q进制数,先将整数部分与小数部分分为两部分,并分别进行转换,然后再用小数点将这两部分连接起来。1)整数部分转换整数部分转换步骤为:第1步:用q去除N的整数部分,得到商和余数,记余数为q进制整数的最低位数码K0;第1章预备知识(数制与码制)第2步:再用q去除得到的商,求出新的商和余数,余数又作为q进制整数的次低位数码K1;第3步:再用q去除得到的新商,再求出相应的商和余数,余数作为q进制整数的下一位数码Ki;第4步:重复第3步,直至商为零,整数转换结束。此时,余数作为转换后q进制整数的最高位数码Kn-1。第1章预备知识(数制与码制)2|1682|84余数0,K0=02|42余数0,K1=02|21余数0,K2=02|10余数1,K3=12|5余数0,K4=08|1682|2余数1,K5=18|21余数0,K0=016|1682|1余数0,K6=08|2余数5,K1=51616|10余数8,K0=80余数1,K7=10余数2,K2=20余数10,K1=A168=10101000B168=250Q168=A8H第1章预备知识(数制与码制)2)小数部分转换小数部分转换步骤为:第1步:用q去乘N的纯小数部分,记下乘积的整数部分,作为q进制小数的第1个数码K-1;第2步:再用q去乘上次积的纯小数部分,得到新乘积的整数部分,记为q进制小数的次位数码K-i;第3步:重复第2步,直至乘积的小数部分为零,或者达到所需要的精度位数为止。此时,乘积的整数位作为q进制小数位的数码K-m。第1章预备知识(数制与码制)例3:将0.686转换成二、八、十六进制数(用小数点后5位表示)。0.686×2=1.372K-1=10.686×8=5.488K-1=50.686×16=10.976K-1=A0.372×2=0.744K-2=00.488×8=3.904K-2=30.976×16=15.616K-2=F0.744×2=1.488K-3=10.904×8=7.232K-3=70.616×16=9.856K-3=90.488×2=0.976K-4=00.232×8=1.856K-4=10.856×16=13.696K-4=D0.976×2=1.952K-5=10.856×8=6.848K-5=60.696×16=11.136K-5=B0.686≈0.10101B0.686≈0.53716Q0.686≈0.AF9DBH第1章预备知识(数制与码制)例4:将168.686转换为二、八、十六进制数。根据例2、例3可得:168.686≈10101000.10101B168.686≈250.53716Q168.686≈A8.AF9DBH第1章预备知识(数制与码制)从以上例子可以看出,二进制表示的数愈精确,所需的数位就愈多,这样,不利于书写和记忆,而且容易出错。另外,若用同样数位表示数,则八、十六进制数所表示数的精度较高。所以在汇编语言编程中常用八进制或十六进制数作为二进制数的缩码,来书写和记忆二进制数,便于人—机信息交换。在MCS-51系列单片机编程中,通常采用十六进制数。第1章预备知识(数制与码制)3.二进制数与八进制数之间的相互转换由于23=8,故可采用“合3为1”的原则,即从小数点开始分别向左、右两边各以3位为1组进行二—八换算;若不足3位的以0补足,便可将二进制数转换为八进制数。例5:将1111011.0101B转换为八进制数。解:根据“合3为1”和不足3位以0补足的原则,将此二进制数书写为:001111011.010100173.24因此,其结果为1111011.0101B=173.24Q。第1章预备知识(数制与码制)例6:将1357.246Q转换成二进制数。解:根据“1分为3”的原则,可将该十进制数书写为:1357.246001011101111.010100110其结果为1357.246Q=1011101111.01010011B。4.二进制数与十六进制数之间的相互转换由于24=16,故可采用“合4为1”的原则,从小数点开始分别向左、右两边各以4位为1组进行二—十六换算;若不足4位以0补足,便可将二进制数转换为十六进制数。第1章预备知识(数制与码制)例7:将1101000101011.001111B转换成十六进制数。解:根据“合4为1”的原则,可将该二进制数书写为:0001101000101011.001111001A2B.3C其结果为1101000101011.001111B=1A2B.3CH。反之,采用“1分为4”的原则,每位十六进制数用4位二进制数表示,便可将十六进制数转换为二进制数。第1章预备知识(数制与码制)例8:将4D5E.6FH转换成二进制数。解:根据“1分为4”的原则,可将该十六进制数书写为:4D5E.6F0100110101011110.01101111其结果为4D5E.6FH=100110101011110.01101111B。第1章预备知识(数制与码制)1.2二进制数的运算1.2.1二进制数的算术运算二进制数不仅物理上容易实现,而且算术运算也比较简单,其加、减法遵循“逢2进1”、“借1当2”的原则。以下通过4个例子说明二进制数的加、减、乘、除运算过程。1.二进制加法1位二进制数的加法规则为:0+0=00+1=11+0=11+1=10(有进位)第1章预备知识(数制与码制)例1:求11001010B+11101B。解:被加数11001010加数11101进位+)00110000和11100111则11001010B+11101B=11100111B。由此可见,两个二进制数相加时,每1位有3个数参与运算(本位被加数、加数、低位进位),从而得到本位和以及向高位的进位。第1章预备知识(数制与码制)2.二进制减法1位二进制数减法规则为:1-0=11-1=00-0=00-1=1(有借位)例2:求10101010B-10101B。解:被减数10101010减数10101借位-)00101010差10010101则10101010B-10101B=10010101B。第1章预备知识(数制与码制)3.二进制乘法1位二进制乘法规则为:0×0=00×1=01×0=01×1=1例3:求110011B×1011B。解:被乘数110011乘数×)1011110011110011000000+)110011积1000110001第1章预备知识(数制与码制)则110011B×1011B=1000110001B。由运算过程可以看出,二进制数乘法与十进制数乘法相类似,可用乘数的每1位去乘被乘数,乘得的中间结果的最低有效位与相应的乘数位对齐,若乘数位为1,则中间结果为被乘数;若乘数位为0,则中间结果为0,最后把所有中间结果同时相加即可得到乘积。显然,这种算法计算机实现时很不方便。对于没有乘法指令的微型计算机来说,常采用比较、相加、与部分积右移相结合的方法进行编程来实现乘法运算。第1章预备知识(数制与码制)4.二进制除法二进制除法的运算过程类似于十进制除法的运算过程。例4:求100100B÷101B。解:00011110110010010110001011101011第1章预备知识(数制与码制)则100100
本文标题:第1章--单片机-预备知识(数制与码制)
链接地址:https://www.777doc.com/doc-3745404 .html