在C ++中计算long long int类型整数绝对值的最快方法是什么?

时间:2013-03-18 21:41:19

标签: c++

在C ++中计算long long int类型整数绝对值的最快方法是什么?没有if()声明可以吗?我正在尝试转换为无符号,然后再次签名,但它不起作用。

3 个答案:

答案 0 :(得分:5)

针对三元运算符,个人资料尝试std::abs,并亲眼看看。

答案 1 :(得分:2)

改编自Bit Twiddling Hacks, Compute the integer absolute value (abs) without branching

long long v; // value to abs()
long long const mask = v >> sizeof(long long) * CHAR_BIT - 1;

unsigned long long result = (v + mask) ^ mask;

答案 2 :(得分:0)

您应该使用llabs。请参阅reference about abs functions on cplusplus.com