当前位置:首页 > 单片机 > 单片机
[导读]从业十年,教你单片机入门 第26讲:乘法的溢出规律跟加法的溢出规律是一样的。举一个例子如下:unsigned char k=30;unsigned char n=10;unsigned char a;a=k*n;分析:k和n相乘,相当于30乘以10,运算结果是300(十六进

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

乘法的溢出规律跟加法的溢出规律是一样的。举一个例子如下:

unsigned char k=30;

unsigned char n=10;

unsigned char a;

a=k*n;

分析:

k和n相乘,相当于30乘以10,运算结果是300(十六进制是0x012c)保存在一个隐藏中间变量,根据前面加法运算的规律,我猜测这个隐藏中间变量可能是unsigned int类型,然后再把这个中间变量赋值给单字节变量a,a只能接收十六进制的低8位字节0x2c,所以运算后a的数值由于溢出变成了十六进制的0x2c(十进制是44)。

由于乘法的溢出规律跟加法的溢出规律是一样的,所以不再多举例子。在实际项目中,为了避免一不小心就溢出的问题,我强烈建议,不管加减乘除,凡是参与运算的变量全部都要转化成unsigned long变量,转化的方法也跟加减运算的转换方法一致,不再详细解决这方面的内容。

现在编写一个程序来练习刚才讲到的内容,最后把程序编译后下载到坚鸿51学习板观察结果。请直接复制第十节模板程序,修改的main程序代码如下:

void main() //主程序

{

/*---C语言学习区域的开始-----------------------------------------------------------------

----------*/

unsigned char k=30;

unsigned char n=10;

unsigned char a;

a=k*n;

GuiWdData0=a; //把变量a这个数值放到窗口变量0里面显示

/*---C语言学习区域的结束-----------------------------------------------------------------

----------*/

while(1)

{

initial();

key_service();

display_service();

}

}

查看运算结果的方法。如何在坚鸿51学习板上观察变量?按下S1或者S5按键即可切换显示不同的窗口,从而显示不同的变量。按下S9按键不松手就可以切换到十六进制的显示界面,松开手后会自动切换到十进制的界面。上坚鸿51学习板观察程序执行的结果如下:

变量a为0x2c(十进制是44)。

下节预告:除法运算的常见格式。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭