从业十年,教你单片机入门 第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种常见格局。