从《编程珠玑》一书中改述(关于旧机器上的c语言,因为该书出自90年代末):
整数算术运算(+
、-
、*
)大约需要10纳秒的时间,而%
运算符最多需要100纳秒的时间。
- 为什么差别这么大?
- 模运算符在内部是如何工作的?
- 它和除法(
/
)在时间上是否相同?
从《编程珠玑》一书中改述(关于旧机器上的c语言,因为该书出自90年代末):
整数算术运算(+
、-
、*
)大约需要10纳秒的时间,而%
运算符最多需要100纳秒的时间。
/
)在时间上是否相同?取模/模运算通常被理解为整数余数运算的等价操作——除法的副作用或对应物。
除了一些退化情况(除数是操作基数的幂——即大多数数字格式的2的幂),这与整数除法同样昂贵!
所以问题实际上是,为什么整数除法如此昂贵?
我没有时间或专业知识来进行数学分析,因此我要求助于小学数学:
考虑需要在笔记本上工作的行数(不包括输入):
简单来说,这应该让您了解为什么除法和取模较慢:计算机仍然必须以您在小学时所做的分步方式进行长除法。
如果这对你来说毫无意义;那么可能是因为你接受的学校数学比我(30+年前)更现代化。