在MCU上实现除法运算的方法、系统、存储介质及电子设备技术方案

技术编号:37778148 阅读:10 留言:0更新日期:2023-06-09 09:08
本发明专利技术公开了在MCU上实现除法运算的方法、系统、存储介质及电子设备,被除数A和除数B为整数,要进行二进制除法运算,包括以下步骤:判断被除数A是否大于或等于除数B,若否,则商C为0;若是,则将除数B赋值给B1,将B1与被除数A进行比较,且通过B1的不断左移位和重复比较,确定除数B1的最佳移位数i;通过将被除数A与B1比较后相减并赋值给被除数A,同时将1按步长左移移位数i后与商C相加并赋值给商C,再将B1右移位和移位数i减1后,重复执行直至被除数A等于0或被除数A小于除数B,得到最终的商C。本发明专利技术节约了器件成本,有助于提高产品的竞争力,还大大提高了除法的运算效率,又将误差限定得很小,可以得到实际运用。可以得到实际运用。可以得到实际运用。

【技术实现步骤摘要】
在MCU上实现除法运算的方法、系统、存储介质及电子设备


[0001]本专利技术涉及在嵌入式系统
,尤其涉及一种在MCU上实现除法运算的方法、系统、存储介质及电子设备。

技术介绍

[0002]嵌入式系统中,由于产品对成本的高度敏感性,通常会选用资源有限的MCU以节省成本。这些MCU能够满足绝大多数应用需要,但有些场合需要用到除法,例如由实际测量值除以理论值得到修正系数,用来修正某些参数或曲线。遗憾的是,廉价MCU并未内置浮点运算器,或者编译器不支持除法运算,或者有缺陷,例如支持的范围太小、精度太差。倘若为此更换支持除法的MCU,不仅增加了成本,还会因为MCU架构的改变,增加开发工作量,延误产品投放市场的时间,错过商机。
[0003]即便MCU或者编译器不直接支持除法运算,仍然有办法达到除法的效果。假定A是被除数A,B是除数B,实际除法就是求解A除以B的商C。显然,除法有精度因素,因为对于除不尽的运算,保留小数点后多少位对商C的精度有着直接影响。在计算机上实现除法,就要在满足精度要求的前提下,尽可能减少运算开销。这些开销包括工作量和时间和存储空间,这是相互制约的几个指标。应用时要进行折中,选择各指标都能接受的最佳方案。
[0004]在计算机上实现整数间的除法,本技术的基本原理是减法计数,商C实际是A整除以B的整除结果,而不带小数。算法描述为(假定B不为0,A、B皆为正整数):
[0005]a.先赋值C=0;
[0006]b.比较A和B,如果A<B就返回C;
[0007]c. A若大于等于B,则A赋值A

B,同时C加1;否则就返回C;
[0008]d.跳到b执行
[0009]因此商C是A不断减B的计数,直到将A减至小于B为止。
[0010]以上称为“基本算法”。它简单易懂,但效率很低,因为商C是个计数值,值越大说明计数循环次数越多,运算时间随C值线性增长。在A、B取值范围很大时,这种计数式运算耗费时间悬殊太大,有可能过长,使除法变得不可行,因此它只适合小范围数据类型的除法使用。
[0011]“基本算法”的另一个问题就是运算精度太差,由于无法算到小数,只能取整,当B值很大时,商C的误差会非常大,因为余数最大可以到B

1。导致这种运算结果没有实用价值。

技术实现思路

[0012]本专利技术要解决的技术问题在于,针对上述
技术介绍
中提及的相关技术存在的至少一个缺陷:廉价MCU并未内置浮点运算器,或者编译器不支持除法运算,或者有缺陷,倘若为此更换支持除法的MCU,不仅增加了成本,还会因为MCU架构的改变,增加开发工作量,延误产品投放市场的时间,错过商机;基本的除法算法效率很低,提供一种在MCU上实现除法运
算的方法、系统、存储介质及电子设备。
[0013]本专利技术解决其技术问题所采用的技术方案是:构造一种在MCU上实现除法运算的方法,被除数A和除数B为整数,要进行二进制除法运算,包括以下步骤:
[0014]S0:判断所述被除数A是否大于或等于所述除数B,若否,则商C为0;若是,则执行S1;
[0015]S1:将所述除数B赋值给B1,将所述B1与所述被除数A进行比较,且通过所述B1的不断左移位和移位数i相应加1后重复比较,确定所述B1的最佳移位数i;
[0016]S2:通过将所述被除数A与所述B1比较后相减并赋值给所述被除数A,同时将1按步长左移所述移位数i后与所述商C相加并赋值给所述商C,再将所述B1右移位和所述移位数i减1后,重复执行直至所述被除数A等于0或所述被除数A小于所述除数B,得到最终的所述商C。
[0017]优选地,在本专利技术所述的在MCU上实现除法运算的方法中,步骤S1包括:
[0018]S11:将所述除数B赋值给B1,将移位数i和所述商C的初始值设为0;
[0019]S12:判断所述被除数A是否大于或等于所述B1且所述被除数A是否小于2倍的所述B1,若否,则执行S13;若是,则执行S15;
[0020]S13:所述B1左移1位,且所述移位数i加1;
[0021]S14:判断移位是否未到所述B1的最高位,若是,则返回执行S12;若否,则执行S15;
[0022]S15:判断所述移位数i是否为0,若是,则返回所述商C为1;若否,则确定所述B1的所述移位数i和左移后的所述B1。
[0023]优选地,在本专利技术所述的在MCU上实现除法运算的方法中,步骤S2包括:
[0024]S21:判断所述被除数A是否大于或等于所述B1,若是,则执行S22;若否,则执行S23;
[0025]S22:将所述被除数A减去所述B1后赋值给所述被除数A,且将1左移所述移位数i后与所述商C相加并赋值给所述商C;
[0026]S23:将所述B1右移1位,且所述移位数i减1;
[0027]S24:判断所述被除数A是否等于0或所述被除数A是否小于所述除数B,若是,则得到最终的所述商C;若否,则返回执行S21。
[0028]优选地,在本专利技术所述的在MCU上实现除法运算的方法中,所述方法还包括:
[0029]当需要求修正系数时,将所述被除数A左移N位,再与所述除数B进行除法运算,得到商k;
[0030]将待修正值乘以所述商k后再右移N位,得到修正值。
[0031]本专利技术还构造了一种在MCU上实现除法运算的系统,被除数A和除数B为整数,要进行二进制除法运算,包括:
[0032]判断模块,用于判断所述被除数A是否大于或等于所述除数B,若否,则商C为0;若是,则跳转至确定模块;
[0033]确定模块,用于将所述除数B赋值给B1,将所述B1与所述被除数A进行比较,且通过所述B1的不断左移位和移位数i相应加1后重复比较,确定所述B1的最佳移位数i;
[0034]第一运算模块,用于通过将所述被除数A与所述B1比较后相减并赋值给所述被除数A,同时将1按步长左移所述移位数i后与所述商C相加并赋值给所述商C,再将所述B1右移
位和所述移位数i减1后,重复执行直至所述被除数A等于0或所述被除数A小于所述除数B,得到最终的所述商C。
[0035]优选地,在本专利技术所述的在MCU上实现除法运算的系统中,所述确定模块包括:
[0036]初始化单元,用于将所述除数B赋值给B1,将移位数i和所述商C的初始值设为0;
[0037]第一判断单元,用于判断所述被除数A是否大于或等于所述B1且所述被除数A是否小于2倍的所述B1,若否,则跳转至第一运算单元和第二判断单元;若是,则跳转至第三判断单元;
[0038]第一运算单元,用于所述B1左移1位,且所述移位数i加1;
[0039]第二判断单元,用于判断所述移位数i是否小于所述被除数A或除数B的位数,若是,则跳转至第一判断单元;若否,则跳转至第三判断单元;
[0040]第三判断单元,用于判断所述移位数i是否为0,若是本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种在MCU上实现除法运算的方法,其特征在于,被除数A和除数B为整数,要进行二进制除法运算,包括以下步骤:S0:判断所述被除数A是否大于或等于所述除数B,若否,则商C为0;若是,则执行S1;S1:将所述除数B赋值给B1,将所述B1与所述被除数A进行比较,且通过所述B1的不断左移位和移位数i相应加1后重复比较,确定所述B1的最佳移位数i;S2:通过将所述被除数A与所述B1比较后相减并赋值给所述被除数A,同时将1按步长左移所述移位数i后与所述商C相加并赋值给所述商C,再将所述B1右移位和所述移位数i减1后,重复执行直至所述被除数A等于0或所述被除数A小于所述除数B,得到最终的所述商C。2.根据权利要求1所述的在MCU上实现除法运算的方法,其特征在于, 步骤S1包括:S11:将所述除数B赋值给B1,将移位数i和所述商C的初始值设为0;S12:判断所述被除数A是否大于或等于所述B1且所述被除数A是否小于2倍的所述B1,若否,则执行S13;若是,则执行S15;S13:所述B1左移1位,且所述移位数i加1;S14:判断移位是否未到所述B1的最高位,若是,则返回执行S12;若否,则执行S15;S15:判断所述移位数i是否为0,若是,则返回所述商C为1;若否,则确定所述B1的所述移位数i和左移后的所述B1。3.根据权利要求1所述的在MCU上实现除法运算的方法,其特征在于,步骤S2包括:S21:判断所述被除数A是否大于或等于所述B1,若是,则执行S22;若否,则执行S23;S22:将所述被除数A减去所述B1后赋值给所述被除数A,且将1左移所述移位数i后与所述商C相加并赋值给所述商C;S23:将所述B1右移1位,且所述移位数i减1;S24:判断所述被除数A是否等于0或所述被除数A是否小于所述除数B,若是,则得到最终的所述商C;若否,则返回执行S21。4.根据权利要求1所述的在MCU上实现除法运算的方法,其特征在于,所述方法还包括:当需要求修正系数时,将所述被除数A左移N位,再与所述除数B进行除法运算,得到商k;将待修正值乘以所述商k后再右移N位,得到修正值。5.一种在MCU上实现除法运算的系统,其特征在于,被除数A和除数B为整数,要进行二进制除法运算,包括:判断模块,用于判断所述被除数A是否大于或等于所述除数B,若否,则商C为0;若是,则跳转至确定模块;确定模块,用于将所述除数B赋值给B1,将所述B1与所述被除数A进行比较,且通过所述B1的不断左移位和移位数i相应加1后重复比较,确定所述B1的最佳移位...

【专利技术属性】
技术研发人员:杨高铸王晓峰王小军张菲
申请(专利权)人:深圳市立创普电源技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1