您现在的位置: 主页 > MCU > 单片机学习 > 第23节:建议把所有参与减法运算的变量都转换成unsigned long数
本文所属标签:
为本文创立个标签吧:

第23节:建议把所有参与减法运算的变量都转换成unsigned long数

来源: 网络用户发布,如有版权联系网管删除 2018-08-31 

[导读]从业十年,教你单片机入门 第23讲:不管是以前讲的加法,现在讲的减法,还是未来讲的乘法和除法,我都会强烈建议“请把所有参与运算的变量都转成unsigned long类型”。unsigned long变量是三种数据类型中

从业十年,教你单片机入门 第23讲:

不管是以前讲的加法,现在讲的减法,还是未来讲的乘法和除法,我都会强烈建议“请把所有参与运算的变量都转成unsigned long类型”。unsigned long变量是三种数据类型中取值范围最大的数,取值范围可达0到4294967295之间,用了此类型变量的运算,不会轻易导致运算溢出的问题。有细心读者会问,万一数据超过了4294967295怎么办?答:可用BCD码的数组方式进行运算。这种数组运算的方法我在《从业将近十年,手把手教你单片机程序框架》里用了好几个章节跟大家介绍过,初学者暂时不用深入学习它。

变量转换的方法是引入中间变量,有多少个需要转换的变量就引入多少个中间变量,请看下面这个例子。

转换之前:

unsigned int a;

unsigned char x=195;

unsigned long y=101;

a=x-y;

分析:上述公式用到3个变量,其中a和x都不是unsigned long变量,因此需要为它们分别引入中间变量t和s。

转换之后:

unsigned int a;

unsigned char x=195;

unsigned long y=101;

unsigned long t; //引入的中间变量,用来替代a

unsigned long s; //引入的中间变量,用来替代x。

s=0; //s在接收x原数据之前先把高位和低位全部清零。因为s和x的数据宽度不一。

s=x; //接收x原数据,相当于把x转换成unsigned long中间变量。

t=s-y; //此处的t就默认代表了变量a。

本章虽短,但是此方法在实际项目中很重要,大家不可大意。

下节预告:乘法运算的5种常见格式。



              查看评论 回复



嵌入式交流网主页 > MCU > 单片机学习 > 第23节:建议把所有参与减法运算的变量都转换成unsigned long数
 

"第23节:建议把所有参与减法运算的变量都转换成unsigned long数"的相关文章

网站地图

围观()