《编写高质量代码:改善c程序代码的125个建议》——建议12-3:用减法运算来实现整数除法运算

简介:

本节书摘来自华章计算机《编写高质量代码:改善c程序代码的125个建议》一书中的第2章,建议12-3,作者:马 伟 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

建议12-3:用减法运算来实现整数除法运算

我们知道,减法运算比除法运算要快得多。因此,对整数除法运算来说,如果知道被除数是除数很小的倍数,那么可以使用减法运算来代替除法运算。例如,对于下面的示例
代码:

unsigned int x=300;
unsigned int y=100;
unsigned int z=x/y;

我们可以将“z=x/y”表达式修改成如下形式:

unsigned int x=300;
unsigned int y=100;
unsigned int z=0;
while (x>=y)
{
    x-=y; 
    ++z;
}

这里使用减法来代替除法运算,虽然代码看起来不是很直观,但是在运行效率上确实要快许多。当然,具体效率也要取决于被除数与除数的倍数。如果倍数比较大,那么相应的循环次数就会增多,采取这种方法就得不偿失了。

相关文章
|
22天前
|
安全 编译器 程序员
【C++ 编译时有理算术】理解 C++编译时有理数运算:原理、实践与应用
【C++ 编译时有理算术】理解 C++编译时有理数运算:原理、实践与应用
67 1
|
6月前
计算机内部乘法除法实现
计算机内部乘法除法实现 乘法:先来个例子:7×5可以写成如下的二进制方式,7为乘数,5为被乘数。7×5=0111×0101那么规则就是,按照被乘数的低位到高位依次计算,如果第n位不为0,那么乘数就左移n位,如果第n为为0 ,那么这步运算结果记为0,最后将每一步的结果相加就是最终的计算结果。 除法:依然先来个例子:123/4写成二进制的形式如下,123为除数,4为被除数。123/4=1111...
45 0
计算机内部乘法除法实现
|
8月前
|
存储 算法 编译器
5.8 汇编语言:汇编高效除法运算
通常情况下计算除法会使用`div/idiv`这两条指令,该指令分别用于计算无符号和有符号除法运算,但除法运算所需要耗费的时间非常多,大概需要比乘法运算多消耗10倍的CPU时钟,在Debug模式下,除法运算不会被优化,但Release模式下,除法运算指令会被特定的算法经过优化后转化为为乘法,这样就可以提高除法运算的效率。
64 0
|
8月前
|
编译器
5.7 汇编语言:汇编高效乘法运算
乘法指令是一种在CPU中实现的基本算术操作,用于计算两个数的乘积。在汇编语言中,乘法指令通常是通过`mul(无符号乘法)`和`imul(有符号乘法)`这两个指令实现的。由于乘法指令在执行时所消耗的时钟周期较多,所以编译器在优化代码时通常会尝试将乘法操作转换为更高效的加法、和移位操作。
87 0
|
10月前
|
Python
制作实现加减乘除运算的简单计算器
制作实现加减乘除运算的简单计算器
79 0
不用加减乘除做加法(简单难度)
不用加减乘除做加法(简单难度)
65 0
不用加减乘除做加法(简单难度)
复数四则运算(精简)
复数四则运算(精简)
109 0
|
Java
Java基础语法运算和控制符(二)
Java基础语法运算和控制符(二)
148 0
Java基础语法运算和控制符(二)
|
程序员 C++ Python
程序员数学基础【一、基础运算符号(整数、普通浮点数运算、逻辑运算)】(Python版本)(一)
程序员数学基础【一、基础运算符号(整数、普通浮点数运算、逻辑运算)】(Python版本)(一)
169 0
程序员数学基础【一、基础运算符号(整数、普通浮点数运算、逻辑运算)】(Python版本)(一)
|
程序员 Python
程序员数学基础【一、基础运算符号(整数、普通浮点数运算、逻辑运算)】(Python版本)(二)
程序员数学基础【一、基础运算符号(整数、普通浮点数运算、逻辑运算)】(Python版本)(二)
186 0
程序员数学基础【一、基础运算符号(整数、普通浮点数运算、逻辑运算)】(Python版本)(二)