Oppure (ovviamente è uguale ...)
unsigned short int prima = 0x600;
unsigned short int dopo;
dopo = prima & 0xC003;
dopo |= ((prima & 0xC0) << 6) | ((prima & 0x3000) >> 2) | ((prima & 0x30) << 4) | ((prima & 0xC00) >> 4) | ((prima & 0x0C) << 2) | ((prima & 0x300) >> 6);
printf("%04X\n", dopo);