perl の 64 ビット整数の内部表現について混乱しています。
Ubuntu 12.04、perl 5.16.0:
print 18440000000000001000 . "\n";
print 18450000000000001000 . "\n";
print -9220000000000001000 . "\n";
print -9230000000000001000 . "\n";
出力:
18440000000000001000
1.845e+19
-9220000000000001000
-9.23e+18
明らかに正の数値はオーバーフローし、2^64 で対応する精度が失われ、浮動小数点数に強制されます。ただし、これでは符号ビット用のスペースがありません。では、-2^63 までの負の数はどのように表現されるのでしょうか?