最佳答案
我确信编译器会非常感谢您对这种情况的分析;它肯定不会想到这一点!
以下是 GCC 对此的看法:
int myabs(int n)
{
return n < 0 ? -n : n; // hurray, portable code!
}
变成:
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
关于javascript - 按位运算符比 + 和 - 运算符更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17834190/