第1节 数制
推荐给好友
打印
加入收藏
更新于2008-08-26 14:34:59

多位数码中每一位的构成方法以及从地位到高位的进位规则称为数制。单片机常用的有三种数制:二进制、十进制和十六进制,其中只有二进制是计算机能直接处理的。但是二进制表达过于繁琐,所以引入十六进制数。十进制是人们最习惯和熟悉的数制。在单片机应用时三种数制都是经常使用的。


1.1.1 二进制(binary)

在二进制数中,每一位只有0 或者1 两个可能的数码,基数为2,低位与相邻高位之间的关系是逢二进一,所以称为二进制。二进制数常以结尾的B 示之。任意一个二进制数按权可展开为:

其中,ki表示二进制数的第i 位,权为2i ,ki从0、1 两个数字中选用;m 、n 为正整数,n 为小数点左边的位数,m 为小数点右边的位数。例如,




1.1.2 二进制数与十进制数之间的转换

a) 二——十转换
把二进制数转换为等值的十进制数称为二—十转换。转化时只需将二进制数按式(1.1.1) 展开,然后把所有各项的数值按十进制数相加,就可以得到相应等值的十进制数了。例如

b) 十——二转换
十进制数转换为二进制数要分整数和小数两部分进行。整数部分的转换采用“除2 取余”法:除2 取余,商为0 止,余数倒置。例如,将(123)10 化为二进制数可如下进行

所以,(123)10 = (1111011)2。小数部分的转换采用“乘2取整”法:乘2取整,直到小数部分为0 或满足精度要求,整数正置。例如将(0.625)10 化为二进制数可如下进行

所以,(0.625)10=(0.101)2。综上两例,得 (123.625)10=(1111011.101)2


1.1.3 十六进制(Hexadecimal)

在十六进制数中,每一位有0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 十六个可能的数码,基数为16,低位与相邻高位之间的关系是逢十六进一,所以称为十六进制。十六进制数常以结尾的H 示之。任意一个二进制数按权可展开为:

其中,ki表示十六进制数的第i 位,权为16i ,ki从0~9、A、B、C、D、E、F 十六个数码中选用;m 、n 为正整数,n 为小数点左边的位数,m 为小数点右边的位数。例如,


1.1.4 二进制数与十六进制数之间的转换

把二进制数转换为等值的十六进制数称为二—十六转换。由于4 位二进制数刚好对应1 位十六进制数,所以二进制转换为十六进制数的方法是:将要转换的二进制数以小数点为界向左和向右一组分开,不足4 位补零,然后将4 位二进制数表示为1 位十六进制数。例如将二进制数10100110.01111110 转换成十六进制数可以如下进行



所以,(10100110. 01111110)2= (A6. 7E)16。同理,十六进制转换为二进制数时,将每一位十六进制转换为对应的4 位二进制数即可。


1.1.5 二进制数与十六进制数的运算

在计算机中,二进制数与十六进制数的运算可分为算术运算和逻辑运算。算术运算包括二进制数和十六进制数加、减、乘、除, 与十进制数类似。逻辑运算包括二进制数和十六进制运算,与、或、非、异或。本节主要介绍二进制数的运算。

1)算术运算
二进制数的算术运算与大家所熟悉的十进制数运算十分相似,唯一的区别就在于运算规则为逢2 进1。


2)逻辑运算
针对十六进制和二进制数的逻辑运算主要有四种:与(AND)、或(OR)、异或(XOR), 以及取反(NOT)。逻辑与、或以及异或运算作用于两个单个位的操作数,运算结果如下:与:
0 and 0 = 0
0 and 1 = 0
1 and 0 = 0
1 and 1 = 1

或:
0 or 0 = 0
0 or 1 = 1
1 or 0 = 1
1 or 1 = 1

异或:
0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0

表3-1,表3-2 和表3-3 是与、或以及异或运算的真值表。真值表类似于小学里学的乘法表,表中最左边一列中的数值对应于运算的左操作数,最上边一行的数值对应于右操作数,而在行列交叉处(对应于特定的一对输入)的数值则是结果

通俗地讲,逻辑与运算可以描述为:“如果第一操作数是一而且第二操作数是一,结果是一,否则结果就是零”。换一种说法,可以描述为:“如果任一操作数是零或者两个操作数都是零,结果就是零”。逻辑与操作在需要置零时比较有用,只要任一操作数为零,不管另一个操作数的值是什么,结果永远是零。如果某一个操作数为一,那么结果就等于另一个操作数的值。
同样,逻辑或运算可以描述为:“如果第一操作数或者第二操作数(或者都)是一,那么结果就是一,否则结果就是零”。逻辑或又被称为同或(inclusive-OR )运算。如果逻辑或的某一个操作数为一,那么结果永远为一,如果某一个操作数为零,那么结果永远等于另一个操作数的值。
逻辑异或运算同样可以描述为:“如果第一或者第二操作数中的任意一个,但不是都为一,那么结果为一,否则结果就是零”。如果任一个操作数为一,那么结果永远是另一个操作数的取反。
逻辑非运算是一元运算(即它只接受一个操作数)。逻辑非的真值表如表3-4 所示。逻辑非只是简单地将操作数的值取反

 

下一节



相关链接


 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.