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

第 4 个数 十进制:30 十六进制:1 E 二进制:111 10 第 5 个数 十进制:15 十六进制:F 二进制:111 1 第 6 个数 十进制:120 十六进制:7 8 二进制:111 1000 分析: 通过实验结 果,发现在单 片机上的计算 结果和 我们的分析是 一致的。 【26.6 如何在单片机上练习本章节 C 语言程序?】 直接复制前 面章节中第十 一节的模板程 序, 练习代码时只需要 更改 “ C 语言学习区 域” 的 …

100%1 / 836
unsigned char k=2; //定义一个变量 k,初始化默认为 2.
//第 1 个知识点:连乘。
a=2*5*3; //乘数全部是常量。a 的结果为 30。
b=k*x*y; //乘数全部是变量。b 的结果为 36。
c=x*5*y; //乘数,有的是常量,有的是变量。c 的结果为 90。
//第 2 个知识点:自乘的简写
d*=6; //相当于 d=d*6;最后 d 的结果为 30。
e*=x; //相当于 e=e*x;最后 e 的结果为 15。
f*=2*y*k; //相当于 f=f*(2*y*k);最后 f 的结果为 120。
View(a); //把第 1 个数 a 发送到电脑端的串口助手软件上观察。
View(b); //把第 2 个数 b 发送到电脑端的串口助手软件上观察。
View(c); //把第 3 个数 c 发送到电脑端的串口助手软件上观察。
View(d); //把第 4 个数 d 发送到电脑端的串口助手软件上观察。
View(e); //把第 5 个数 e 发送到电脑端的串口助手软件上观察。
View(f); //把第 6 个数 f 发送到电脑端的串口助手软件上观察。
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
1 个数
十进制:30
十六进制:1E
二进制:11110
2 个数
十进制:36
十六进制:24
二进制:100100
3 个数
十进制:90
十六进制:5A
二进制:1011010
4 个数
十进制:30
十六进制:1E
二进制:11110
5 个数
十进制:15
十六进制:F
二进制:1111
6 个数
十进制:120
十六进制:78
二进制:1111000
分析:
通过实验结果,发现在单片机上的计算结果和我们的分析是一致的。
【26.6 如何在单片机上练习本章节 C 语言程序?】
直接复制前面章节中第十一节的模板程序,练习代码时只需要更改C 语言学习区域”代码就可以了,
其它部分的代码不要动。编译后,把程序下载进带串口 51 习板,通过电脑端的串口助手软件就可以观
察到不同的变量数值,详细方法请看第十一节内容。
第二十七节:整除求商。
【27.1 什么叫整除?】
最小的细分单位是“1”的除法运算就是整除,1”不能再往下细分成小数点的除法运算就是整除。比
如:
10 除以 4,商等于 2.5。------(带小数点,这个不是整除)
10 除以 4,商等于 2,余数是 2。------(这才是整除)
什么时候带小数点,什么时候是整除?取决于参与运算的变量类型。标准的 C 语言中其实远远不止我
前面所说的 unsigned char ,unsigned int ,unsigned long 这三种类型,比如还有一种叫浮点数类型 float,
当参与运算的变量存在 float 类型时,就可能存在小数点关于小数点的问题以后再讲,现在暂时不深入讲
解,现在要知道的是,unsigned char ,unsigned int ,unsigned long 这三种变量类型的除法都是属于整除
运算,不带小数点的。
【27.2 整除的运算符号是什么样子的?】
10 除以 4,商等于 2,余数是 2,这个整除的过程诞生了两个结果,一个是商,一个是余数,与此对应,
整除就诞生出两个运算符号,你如果想计算结果返回商就用“整除求商”的符“/”你如果想计算结果返
回余数就整除求余”的符号“%”。咋一看,整除运算中用到的两个符号“/”和“%”都不是我们日常生
活中熟悉的除号“÷”我个人猜测是因为“÷”这个符号在电脑键盘上不方便直接输入,因 C 语言的语
法规则选用“/”和“%”作为整除的运算符号。
【27.3 整除求商“/”
整除求商的通用格式:
“保存变量”=“被除数” / “除数 1” / “除数 2”... / “除数 N”;
跟之前讲的加减运算一样,赋值符号“=”左边的“保存变量”必须是变量,右边的可以是变量和常
的任意组合。如果右边只有两个参与运算的数据,就是整除求商的常见格式。
整除求商的常见格式:
“保存变量”=“被除数” / “除数” ;
现在深入分析一下整除求商的运算规律
(1)当除数等 0 时。
我们都知道数学运算的除数是不允许等于 0 的,如果在 51 单片机中非要让除数为 0,商会出现什么结
果?我测试了一下,发现有一个规律:在 unsigned char 的变量类型下,如果“除数”是变量的 0,商等于
十进制的 255(十六进制 0xff)。如果“除数”是常量的 0,商等于十进制的 1。比如:
unsigned char a;
unsigned char b;
unsigned char y=0;
a=23/y; //除数变量 y 里面是 0,那么 a 的结果是 255(十六进制的 0xff)。
b=23/0; //除数是常量 0,那 b 的结果是 1
平时做项目要尽量避免“除数是 0”的情况,离它越远越好,但是既然除数不能为 0,为什么我非要做
“除数为 0”时的实验呢?意义何在?这个实验的意义是,虽然我知道除数为 0 时会出错,但是我不知道
个错到底严不严重,会不会导致整个程序崩溃,当我做了这个实验后,我心中的石头才放下了,万一除数