目录
1、二进制、十进制、十六进制转换
1.1 进制介绍
1.2 进制转换
2、C语言基础
2.1 C语言变量类型及在C51的范围
2.2 C语言运算符
3、keil软件的Debug教程
3.1 延时引入
3.2程序Debug的应用
3.3 断点设置
4、 流水灯的实现
5、收获
1、二进制、十进制、十六进制转换
1.1 进制介绍
十进制:逢十进位,一个为有十个值:0~~9。
二进制:是逢二进位,它的一个位只有两个值:0 和 1,是实现计算机系统的最基本的理论基础,计算机(包括单片机)芯片是基于成万上亿个的开关管组合而成的,他们每一个都只能有开和关两种状态,对应于二进制的 1 和 0 两个值,书写二进制数据时需加前缀 0b,每一位的值只能是 0 或 1。八位二进制称为一个字节。
十六进制:就是把 4 个二进制位组合为一位来表示,用 0~9 再加上 A~F(或 a~f)表示,逢十六进位,是二进制的一种缩写形式,也是我们程序编写中常用的形式。书写十六进制数据时需加前缀 0x,两位十六进制称为一个字节。
下表为三种进制间对应关系:
进制说明:对于进制来说,只是数据的表现形式,而数据的大小不会因为进制表现形式不同而不同,比如二进制的 0b1、十进制的 1、十六进制的 0x01,他们本质上是数值大小相等的同一个数据。我们在进行 C 语言编程的时候,我们只用到十进制和十六进制。
1.2 进制转换
二进制转十六进制
16进制就有16个数,0–15,用二进制表示15的方法就是1111,从而可以推断出,16进制用2进制可以表现成0000~1111,顾名思义,也就是每四个为一位。举例:
00111101可以这样分:
0011|1101(最高位不够可用零代替),对照着二进制的表格, 8 4 2 1 (一般例举这么多就够了,如果有小数的话就继续往右边列举,如0.5 0.25 0.125 0.0625……)
8 4 2 1
0 0 1 1| 1 1 0 1
左半边=2+1=3 右半边=8+4+1=13=D
结果,00111101就可以换算成16进制的3D。
二进制转十进制
从最低位(最右)算起,位上的数字乘以本位的权重,权重就是2的第几位的位数减一次方。比如第2位就是2的(2-1次)方,就是2;第8位就是2的(8-1)次方是128。把所有的值加起来。
2(1-1)代表2的0次方,就是1;其他类推
比如二进制1101,换算成十进制就是:12(1-1)+02(2-1)+12(3-1)+12(4-1)=1+0+4+8=13。
十六进制到二进制
由于在二进制的表示方法中,每四位所表示的数的最大值对应16进制的15,即16进制每一位上最大值,所以,我们可以得出简便的转换方法,将16进制上每一位分别对应二进制上四位进行转换,即得所求:
例:2AF5换算成2进制:
第0位: (5)16 = (0101) 2
第1位: (F)16 = (1111) 2
第2位: (A) 16 = (1010) 2
<