It's not the same. (4*C>>2) = ((C<<2)>>2) = clear two most significative bits For example suppose C as byte (unsigned): If C = 46 (0010 1110) then (4*C>>2) = 46 (0010 1110) also, but if C = 114 (0111 0010) then (4*C>>2) = 50 (0011 0010)
printf("%#x %#x\n", 4*114 >> 2, 114); printf("%#x %#x\n", 4*46 >> 2, 46);
0x72 0x72 0x2e 0x2e