From: Tanaka Akira Date: 2007-08-16T11:43:34+09:00 Subject: [ruby-dev:31434] LP64: -0x10000000000000001 << -0x80000001 LP64 環境で、-0x10000000000000001 << -0x80000001 が RangeError になります。 % ./ruby -ve 'p(-0x10000000000000001 << -0x80000001)' ruby 1.9.0 (2007-08-16 patchlevel 0) [x86_64-freebsd6.2] -e:1:in `<<': integer -2147483649 too small to convert to `int' (RangeError) from -e:1:in `
' あと、-3 << -0x4000000000000001 が -2 になります。 % ./ruby -ve 'p(-3 << -0x4000000000000001)' ruby 1.9.0 (2007-08-16 patchlevel 0) [x86_64-freebsd6.2] -2 -- [田中 哲][たなか あきら][Tanaka Akira]