Multiplications 12 * 2 = 12 << 1 12 * 4 = 12 << 2 12 * 8 = 12 << 3 12 * 16 = 12 << 4 12 * 32 = 12 << 5 12 * 64 = 12 << 6 12 * 128 = 12 << 7 12 * 256 = 12 << 8 Divisions 12 / 2 = 12 >> 1 12 / 4 = 12 >> 2 12 / 8 = 12 >> 3 12 / 16 = 12 >> 4 12 / 32 = 12 >> 5 12 / 64 = 12 >> 6 12 / 128 = 12 >> 7 12 / 256 = 12 >> 8 Code: #include<stdio.h> void main(void) { int a; a = 12 << 1; printf("%d",a); }
in machine terms, for i12 / 256, 12 >> 8 is faster. Is that what you mean? or just for easier calculations?
this method does not work if you have logic one at msb for eg Code: // before: binary equivalent 10000000 uint_8 t = 128; t<<1; // after: decimal equivalent : 0 // after: binary equivalent 00000000