Coding for an embedded platform with no integer divisor (nor multiplier), is there a quick way to perform a ‘divide by 24’?
Multiply by 24 is simply
int a;
int b = (a << 4) + (a << 3); // a*16 + a*8
But division? It’s a really simple divisor, with only two bits set?
If you don’t need the result to be bit-exact, then you could consider multiplying by 1/24:
Of course, if your platform doesn’t have a hardware multiplier, then you will need to optimise that multiplication. As it turns out, (65536 / 24) is approximately equal to 2730, which is 101010101010 in binary. So that multiply can be achieved with 3 shifts and adds.