C语言中如何实现多种除法和取模运算算法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3785个文字,预计阅读时间需要16分钟。
计算机语言中,除法和求模是整数算术中最为复杂的运算。与其他运算(如加法和减法)相比,这两种运算的执行速度相对较慢。例如,ARM硬件上通常不支持除法指令,编译器会调用C库函数来实现除法。
对计算机来说,除法与求模是整数算术运算中最复杂的运算。相对其他运算(如加法与减法)来说,这两种算法的执行速度非常慢。例如,ARM 硬件上不支持除法指令,编译器调用 C 库函数来实现除法运算。直接利用 C 库函数中的标准整数除法程序要花费 20~100 个周期,消耗较多资源。在非嵌入式领域,因为 CPU 运算速度快、存储器容量大,所以执行除法运算和求模运算消耗的这些资源对计算机来说不算什么。但是在嵌入式领域,消耗大量资源带来的影响不言而喻。因此,从理论上讲,我们应该在程序表达式中尽量减少对除法运算与求模运算的使用,尽量使用其他方法来代替除法与求模运算。例如,对于下面的示例代码:
if (x/y>z)
{
// ...
}
我们可以将其修改成如下形式:
if (((y>0)&&(x>y*z))||((y<0)&&(x<y*z))) { // ... } 这样就简单地避免了一些除法运算。同时,也可以在表达式中通过合并除法的方式来减少除法运算,下面通过示例来讲解。
本文共计3785个文字,预计阅读时间需要16分钟。
计算机语言中,除法和求模是整数算术中最为复杂的运算。与其他运算(如加法和减法)相比,这两种运算的执行速度相对较慢。例如,ARM硬件上通常不支持除法指令,编译器会调用C库函数来实现除法。
对计算机来说,除法与求模是整数算术运算中最复杂的运算。相对其他运算(如加法与减法)来说,这两种算法的执行速度非常慢。例如,ARM 硬件上不支持除法指令,编译器调用 C 库函数来实现除法运算。直接利用 C 库函数中的标准整数除法程序要花费 20~100 个周期,消耗较多资源。在非嵌入式领域,因为 CPU 运算速度快、存储器容量大,所以执行除法运算和求模运算消耗的这些资源对计算机来说不算什么。但是在嵌入式领域,消耗大量资源带来的影响不言而喻。因此,从理论上讲,我们应该在程序表达式中尽量减少对除法运算与求模运算的使用,尽量使用其他方法来代替除法与求模运算。例如,对于下面的示例代码:
if (x/y>z)
{
// ...
}
我们可以将其修改成如下形式:
if (((y>0)&&(x>y*z))||((y<0)&&(x<y*z))) { // ... } 这样就简单地避免了一些除法运算。同时,也可以在表达式中通过合并除法的方式来减少除法运算,下面通过示例来讲解。

