えぐち@エスアンドイー です。

>>> In message [ruby-dev:8525] Re: BIGDN
    On Sat, 4 Dec 1999 05:01:18 +0900, Toyofuku <toyofuku / juice.or.jp> said:

豊福>   豊福です。
豊福> 
豊福> |  #define RSHIFT(x,y) (((x)<0) ? ~((~(x))>>y) : (x)>>y)
豊福> 
豊福>   #define RSHIFT(x,y) ((x)>>((signed int)(y)))
豊福> 
豊福> ではどうでしょう。

signed が有効でない処理系もあるので、単に

  #define RSHIFT(x,y) ((x)>>((int)(y)))

が妥当かも知れません。

それから、
hpux-10.x は y の符号の有無で MSB を複製の挙動が変化しますが、
x の符号の有無や x の MSB が1の時の挙動はansi では実装依存なので、
x を正に正規化しシフトする元のバージョンの実装は的確だと思います。

	えぐち