Quoting the code for computing the integer absolute value (abs) without branching from http://graphics.stanford.edu/~seander/bithacks.html:
int v; // we want to find the absolute value of v
unsigned int r; // the result goes here
int const mask = v >> sizeof(int) * CHAR_BIT - 1;
r = (v + mask) ^ mask;
Patented variation:
r = (v ^ mask) - mask;
What is CHAR_BIT
and how use it?
CHAR_BIT
is the number of bits in char
. These days, almost all architectures use 8 bits per byte but it is not the case always. Some older machines used to have 7-bit byte.
It can be found in <limits.h>
.