【发布时间】:2016-01-09 08:56:37
【问题描述】:
出于各种原因,通常需要检查一个完整数字的奇数,一个这样的例子是数据网格,其中每条奇数行都是不同的颜色以提高可读性。程序员经常使用公式来实现这样的功能
odd = n mod 2 != 0
或者反过来:
even = n mod 2 == 0
但是这种方法很慢,因为它需要 FPU 计算除法的余数。
我还看到开发人员编写了以下代码:
x = n / 2
odd = x mod 2
有没有更好的方法来做到这一点?
【问题讨论】:
-
对于许多/大多数编译器来说,您的前提是错误的。
-
@JamesKPolk - 事实上,这就是为什么答案指出这不仅适用于编译语言,而且许多编译器已经为此进行了优化。
-
你好像同时写了答案和问题。
-
@JamesKPolk - 正确,这是 StackOverflow 的一个特性,值得鼓励。
-
@Geoffrey 你的意思是说'鼓励同时发布一个问题和一个问题的答案' 还是仅仅鼓励自己回答问题?
标签: bit-manipulation division bit-shift modulo