En fait Java doit coder les longs sur 64bits, dont un bit de signe. Quand il dépasse 2^63-1, la retenue tombe sur le bit de signe, et on repart à -2^63. Classique des langages de soit-disant haut niveau, qui devraient être indépendants des détails d'implémentations, mais qui gère mal (cad pas du tout) ce genre de cas...
[^] # Re: Hash ?
Posté par jigso . En réponse au message Equivalent en Perl de Hashcode en Java. Évalué à 3.
my $MAX_VALUE = Math::BigInt->new("9223372036854775808");
foreach(split //,shift) {
$hash = 31*$hash+ord($_);
if ($hash >= $MAX_VALUE) {
$hash = $hash - 2*MAX_VALUE;
}
}
En fait Java doit coder les longs sur 64bits, dont un bit de signe. Quand il dépasse 2^63-1, la retenue tombe sur le bit de signe, et on repart à -2^63. Classique des langages de soit-disant haut niveau, qui devraient être indépendants des détails d'implémentations, mais qui gère mal (cad pas du tout) ce genre de cas...