1

C++ で long long int 型の整数の絶対値を計算する最速の方法は何ですか? if()ステートメントなしで行うことは可能ですか?unsigned に変換してから再度 signed に変換しようとしましたが、うまくいきません。

4

3 に答える 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

を使用する必要がありますllabscplusplus.com の関数に関するリファレンスを参照してください。abs

于 2013-03-18T21:42:53.653 に答える