小松です。

In the message of [ruby-dev:10163] Re: 1 >> 323232
    on 2000/7/2 09:14:13 nobu.nakada / nifty.ne.jp wrote:
> > 323232ってどこから出てくるんだろう?
> 
>   323232 % 32 == 0, 323232 % 64 == 32 だからでしょう。ワードサ
> イズを越えるシフトをしたときの動作はたぶん CPU で違うと思います
> が。

ああそうか。

% ruby -ve 'puts 1>>31, 1>>32, (-1)>>31, (-1)>>32'
ruby 1.5.4 (2000-06-29) [sparc-solaris2.5.1]
0
1
-1
-1
% 

> +    if (i >= sizeof(VALUE)*CHAR_BIT)
> +	return INT2FIX(0);

FIX2LONG(x)が負の場合も考えないと。
(-1) >> 32が0になっちゃいますよ。

--
小松克行 / Katsuyuki Komatsu <komatsu / sarion.co.jp>