在 C++ 中计算 long long int 类型整数绝对值的最快方法是什么?没有if()
声明可以吗?我试图转换为未签名然后再次签名,但它不起作用。
问问题
3206 次
3 回答
5
尝试std::abs
对三元运算符,配置文件,并亲自查看。
于 2013-03-18T21:43:56.023 回答
2
改编自Bit Twiddling Hacks,计算整数绝对值 (abs) 而无需分支:
long long v; // value to abs()
long long const mask = v >> sizeof(long long) * CHAR_BIT - 1;
unsigned long long result = (v + mask) ^ mask;
于 2013-03-18T21:43:10.967 回答
0
你应该使用llabs
. 请参阅cplusplus.com 上的函数参考abs
于 2013-03-18T21:42:53.653 回答