どうも右シフトの元質問者です
なんだかお題の書き方が曖昧だったみたいですんません
割算をしたいという趣旨ではなくて、最上位ビット以外をシフトしたい
ということでした。てことでいろいろヒントをいただいた結果こんなん
になりました。

#define MASK ((~(unsigned)0)>>1)
#define RSHIFT(i,n) (signed)((i<0?(~MASK):0)|(((unsigned)i&MASK)>>n))

簡単にならんかな・・・