Pra*_*ari -1 javascript c c++ bit-manipulation bit-shift
请参阅链接.
建议计算数字绝对值的最快方法是使用(相对困难的)按位运算符.
我知道按位运算符比除法和乘法更快.但它们是否比+和 - 运算符更快?
谢谢
Ker*_* SB 15
我相信编译器非常感谢你对这种情况的分析; 它肯定不会想到这个!
以下是海湾合作委员会对此的看法:
int myabs(int n)
{
return n < 0 ? -n : n; // hurray, portable code!
}
Run Code Online (Sandbox Code Playgroud)
变为:
mov edx, edi ;; edx = x
sar edx, 31 ;; edx >>= 31
mov eax, edx
xor eax, edi
sub eax, edx ;; eax = (x ^ (x >> 31)) - (x >> 31)
ret ;; return eax
Run Code Online (Sandbox Code Playgroud)
措施。在您感兴趣的上下文中。我曾在乘法比移位更快的机器上工作,在它根本慢得多的机器上工作。但是你不能事先说出来。就此而言,最新英特尔上最快的可能不是下一个问世最快的。(在链接的代码是那种你的东西不想要做的。这不是可读,这是不可移植,甚至在那里工作的系统中,有一个很好的机会,这是不是太天真实施较慢。)
| 归档时间: |
|
| 查看次数: |
1979 次 |
| 最近记录: |