Conditionally set or clear bits without branching

From WikiCoder
 bool f;         // conditional flag
 unsigned int m; // the bit mask
 unsigned int w; // the word to modify:  if (f) w |= m; else w &= ~m; 
 
 w ^= (-f ^ w) & m;

OR, for superscalar CPUs:

 w = (w & ~m) | (-f & m);

On some architectures, the lack of branching can more than make up for what appears to be twice as many operations. For instance, informal speed tests on an AMD Athlon™ XP 2100+ indicated it was 5-10% faster. An Intel Core 2 Duo ran the superscalar version about 16% faster than the first.

References