The multiplication operation for integer numbers is implemented in the processor as repeated additions. The number of additions can be reduced by considering the representation in base 2 of the multiplier, as in this example:
int i = 111;//We need to compute int j = i * 15; but 15 = 1 + 2 + 4 + 8 = 2^0 + 2^1 +2^2 + 2^3,//so we can reduce the multiplication to some shift operations and just 3 additionsint j = i + (I<<1) + (I<<2) + (I<<3);
If you have multiplications in some lengthy iterative loops, using this trick can substantially increase CPU saving.