从单片机基础到程序框架(全集 2019pdf版).pdf - 第64页

其它 部分的 代码 不要动 。编 译后, 把程 序下 载进带 串口的 51 学习 板,通 过电 脑端的 串口 助手 软件就 可以 观 察到不同的变量 数值,详 细方法请看第 十一节 内容。

100%1 / 836
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
1 个数
十进制:255
十六进制:FF
二进制:11111111
2 个数
十进制:0
十六进制:0
二进制:0
3 个数
十进制:65535
十六进制:FFFF
二进制:1111111111111111
4 个数
十进制:0
十六进制:0
二进制:0
5 个数
十进制:4294967295
十六进制:FFFFFFFF
二进制:11111111111111111111111111111111
6 个数
十进制:0
十六进制:0
二进制:0
分析:
通过实验结果,我们知道 unsigned char 变量最大能取值 255,如果非要赋值 256 就会超出范围溢出
后变成了 0。unsigned int 量最大能取值到 65535,如果非要赋值 65536 就会超出范围溢出后变成 0。
unsigned long 变量最大能取值到 4294967295,如果非要赋值 4294967296 就会超出范围溢出后变成了 0。
【14.7 如何在单片机上练习本章节 C 语言程序?】
直接复制前面章节中第十一节的模板程序,练习代码时只需要更改C 语言学习区域”代码就可以了,
其它部分的代码不要动。编译后,把程序下载进带串口的 51 学习板,通过电脑端的串口助手软件就可以
察到不同的变量数值,详细方法请看第十一节内容。
第十五节:二进制与十六进制。
【15.1 十六进制是二进制的缩写。
在我的印象中,C51 编译器好像并不支持二进制的书写格式,即使它能支持二进制的书写格式,二进制
的书写还是有个弊端,就是数字太多太长了,写起来非常费劲不方便,怎么办?解决办法就是用十六进制。
十六进制是二进制的缩写,之所以称它为二进制的缩写是因为它们的转换关系非常简单直观不需要借助
计算器即可相互转换。
【15.2 何谓十六进制?】
何谓十六进制?欲搞清楚这个问题,还得先从十进制说起。所谓十进制,就是用一位字符可以表示从 0
9 这十个数字。所谓二进制就是用一位字符可以表示从 0 1 这二个数字。所谓十六进制,当然也就是
用一位字可以示从 0 15 这十六个字。是十六进马上会面一个题,十六制的 10 15
6 C A,B,C,D,E,F
10,11,12,13,14,15 6 10 0 9 A,B,C,D,E,F
a,b,c,d,e,f 来替代,在数值上不区分大小写,比如十六进制的 a A 都是表示十进制 10。
【15.3 二进制与十六进制是如何转换的?】
前面提到了十六进制是二进制的缩写,它们的转换关系非常简单直观,每 1 位十六进制的字符,对应 4
位二进制的字符。关系如下:
十进制 二进 十六进制
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
二进制转换成十六进制的时候,如果不是 4 位的倍数则最左边高位默认补上 0 凑合 4 位的倍数。
如一个二进制的 101001,可以在左边补 2 0 变成 00101001,然后把 4 位字符转 1 十六进制的
字符。左边高 4 0010 对应十六进制的 2,右边 4 1001 对应十六进制的 9,所以二进制 101001 合起