您的位置 首页 产品

第26节:乘法运算的溢出

从业十年,教你单片机入门第26讲:乘法的溢出规律跟加法的溢出规律是一样的。举一个例子如下:unsignedchark=30;unsignedcharn=1

从业十年,教你单片机入门 第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)。

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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/262153.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部