>>212
#define RSHIFT(i,n) (signed)((i<0?(~MASK):0)|((abs(i)&MASK)>>n))
では、だめか?