в духе 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
, но это связано с умножением, которого я также хотел бы избежать. Заранее спасибо.
РЕДАКТИРОВАТЬ: Всем спасибо,
x -= (pow2^-sgn) + sgn
, похоже, помогает!