从单片机基础到程序框架(全集 2019pdf版).pdf - 第67页
在电脑串口 助手软件上观察 到的程序执行 现象 如下: 开始... 第 1 个数 十进制:6 十六进制:6 二进制:110 第 2 个数 十进制:10 十六进制:A 二进制:101 0 第 3 个数 十进制:14 十六进制:E 二进制:111 0 第 4 个数 十进制:44 十六进制:2 C 二进制:101 100 分析: 通过实验结 果, 我们 知道 二进制与十六 进制的转换关 系确实非常清 晰简单, 所以十六进 制也可以看作 是 二…

来最终转换成十六进制的数是 29(实际上正确的写法是 0x29,为什么?请继续往下看。)。
【15.4 十六进制数的标准书写格式是什么样子的?】
十六进制的标准书写格式是什么样子的?实际上,十六进制 29 并不能直接写成 29,否则就跟十进制的
写法混淆了。为了把十六进制和十进制的书写格式进行区分,C 语言规定凡是十六进制必须加一个数字 0 和
一个字母 x 作为前缀,也就是十六进制必须以 0x 作为前缀,所以刚才的十六进制 29 就应该写成 0x29,否则,
如果直接写 29 编译器会认为是十进制的 29,而十进制的 29 转换成十六进制是 0x1D(十进制与十六进制之间
如何转换在后面章节会讲到),0x29 与 0x1D 可见差别很大的,凡是不加前缀的都会被默认为十进制。 多说
一句,在 C 语言程序里,对于同样一个数值,既可以用十六进制,也可以用十进制,比如:d=0x2C 与 d=44
的含义是一样的,因为十六进制的 0x2C 和十进制的 44 最终都会被 C51 编译器翻译成二进制 00101100,是表
示同样大小的数值。
【15.5 例程练习和分析。】
现在我们编写一个程序来观察十六进制和二进制的关系。
程序代码如下:
/*---C 语言学习区域的开始。-----------------------------------------------*/
void main() //主函数
{
unsigned char a; //定义一个变量 a,并且分配了 1 个字节的 RAM 空间。
unsigned char b; //定义一个变量 b,并且分配了 1 个字节的 RAM 空间。
unsigned char c; //定义一个变量 c,并且分配了 1 个字节的 RAM 空间。
unsigned char d; //定义一个变量 d,并且分配了 1 个字节的 RAM 空间。
a=0x06; //十六进制前记得加 0x 前缀,超过 9 部分的字母不分大小写。
b=0x0A; //十六进制前记得加 0x 前缀,超过 9 部分的字母不分大小写。
c=0x0e; //十六进制前记得加 0x 前缀,超过 9 部分的字母不分大小写。
d=0x2C; //十六进制前记得加 0x 前缀,超过 9 部分的字母不分大小写。
View(a); //把第 1 个数 a 发送到电脑端的串口助手软件上观察。
View(b); //把第 2 个数 b 发送到电脑端的串口助手软件上观察。
View(c); //把第 3 个数 c 发送到电脑端的串口助手软件上观察。
View(d); //把第 4 个数 d 发送到电脑端的串口助手软件上观察。
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/

在电脑串口助手软件上观察到的程序执行现象如下:
开始...
第 1 个数
十进制:6
十六进制:6
二进制:110
第 2 个数
十进制:10
十六进制:A
二进制:1010
第 3 个数
十进制:14
十六进制:E
二进制:1110
第 4 个数
十进制:44
十六进制:2C
二进制:101100
分析:
通过实验结果,我们知道二进制与十六进制的转换关系确实非常清晰简单,所以十六进制也可以看作是
二进制的缩写。
【15.6 如何在单片机上练习本章节 C 语言程序?】
直接复制前面章节中第十一节的模板程序,练习代码时只需要更改“C 语言学习区域”的代码就可以了,
其它部分的代码不要动。编译后,把程序下载进带串口的 51 学习板,通过电脑端的串口助手软件就可以观
察到不同的变量数值,详细方法请看第十一节内容。

第十六节:十进制与十六进制。
【16.1 十进制与十六进制各自的应用场合。】
C 语言程序里只用了十进制和十六进制这两种书写格式,有的初学者会问,为什么没有用二进制?我的
回答是:不是没有用二进制,而是十六进制已经代表了二进制,因为十六进制就是二进制的缩写形式,所以
可以把十六进制和二进制看作是同一个东西。
十进制和十六进制各自有什么应用场合?十六进制方便人们理解机器,通常应用在配置寄存器,底层通
讯驱动,底层 IO 口驱动,以及数据的移位、转换、合并等场合,在底层驱动程序方面经常要用到。而十进
制则方便人们直观理解数值的大小,在程序应用层要经常用到。总之,进制只是数据的表现形式而已,不管
是什么进制的数,最终经过编译后都可以看做是二进制的数据。
【16.2 十进制与十六进制相互转换的方法。】
十进制与十六进制如何相互转换?其实很多教科书上都有介绍它们之间如何通过手工计算进行转换的
方法,这种方法当然是有助于我们深入理解数据的含义和转换关系,有兴趣的朋友可以自己找相关书籍来看
看,但是在实际应用中,我本人是从来没有用过这种手工计算方法,而我用的方法是最简单直接的,就是借
助电脑自带的计算器进行数制转换即可。现在把这种方法介绍给大家,以 WIND7 系统的电脑为例来讲解详细
的操作步骤。
图 16.2.1.1 点击“所有程序”选项切换到系统自带程序的窗口