小松です。

In the message of [ruby-dev:10160] 1 >> 323232
    on 2000/7/1 23:39:05 Tadayoshi Funaba <tadf / kt.rim.or.jp> wrote:
|1 >> 323232
|	==> 1
|
|となるのは、バグ?

へえー、面白いな。

numeric.cのfix_rshift()と同等のテストをやってみると、
試した限りの32bitマシンは全滅で64bitマシンはOKでした。

323232ってどこから出てくるんだろう?

% cat t.c #include <stdio.h> int main() { long i = 323231; long j = 323232; printf("%ld, %ld\n", 1L >> i, 1L >> j); return 0; } %
[Solaris] % uname -mrs SunOS 5.5.1 sun4u % gcc -o t t.c % ./t 0, 1 % ruby -e 'p 1 >> 323232' 1 % [Alpha Linux] % uname -mrs Linux 2.2.14 alpha % gcc -o t t.c % ./t 0, 0 % ccc -o t t.c 0, 0 % ruby -e 'p 1 >> 323232' 0 % [IRIX64] % uname -mrs IRIX64 6.5 IP30 % cc -32 -o t t.c % ./t 0, 1 % cc -64 -o t t.c % ./t 0, 0 % ruby -e 'p 1 >> 323232' 0 % -- 小松克行 / Katsuyuki Komatsu <komatsu / sarion.co.jp>