в духе graphics.stanford.edu/~seander/bithacks.html Мне нужно решить следующую проблему:
int x;
int pow2; // always a positive power of 2
int sgn; // always either 0 or 1
// ...
// ...
if(sgn == 0)
x -= pow2;
else
x += pow2;
Конечно, мне нужно избегать условного. Пока лучшее, что я придумал, это
x -= (1|(~sgn+1))*pow2
но это связано с умножением, которое я также хотел бы избежать. Спасибо заранее.
EDIT: Спасибо всем,
x -= (pow2^-sgn) + sgn
похоже, делает трюк!