А чем не нравится свой вариант? Можно в макрос какой завернуть, или такой вариант:
u8 arr[2];
*(u16*)arr >>= 2;
или
struct {
u8 hi;
u8 lo;
} chardates = { 0x20, 0xaa };
*(u16*)&chardates >>= 2;
Это еще легче обворачивается в макрос
только обратить внимание на последовательность lo и hi в зависимости от платформы