Maison >Java >javaDidacticiel >Pourquoi l'ajout de « L » à un opérande dans une multiplication Java change-t-il le résultat ?

Pourquoi l'ajout de « L » à un opérande dans une multiplication Java change-t-il le résultat ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-07 12:29:02827parcourir

Why does adding

Pourquoi des résultats de multiplication différents avec et sans "L" ?

En Java, l'opération de multiplication produit des résultats différents lors de l'utilisation du "L" suffixe pour l'un des opérandes.

Ajout de "L" pour une valeur longue correcte

L'ajout de "L" garantit que le résultat est une valeur longue. En multipliant des nombres entiers, le résultat est également un nombre entier. Si le résultat dépasse la plage d'un entier (2147483647 à -2147483648), il déborde et devient négatif.

En ajoutant "L" à 365 dans l'expression, vous précisez explicitement qu'il s'agit d'une valeur longue. Cela garantit que le résultat de sa multiplication avec les autres entiers est une valeur longue et n'est pas tronquée à la plage entière.

Sans "L" : résultat entier incorrect

Lorsque vous multipliez des entiers sans « L », le résultat est un entier. Si le résultat dépasse la plage entière, il "s'enroule" et devient une valeur différente.

Par exemple, la multiplication 1000606024365 sans ajouter " L" donne le résultat incorrect 1471228928. En effet, le résultat 31536000000 déborde de la plage entière et devient -1702967296 (la représentation en complément à 2 de 31536000000).

Représentation binaire

Les représentations binaires des deux résultats montrent la différence :

  • 1000606024365L : 011101010111101100010010110000000000
  • 1000 606024365 : 0111111111111111111111111111111

Lorsque vous n'ajoutez pas "L", les quatre bits les plus significatifs sont tronqués, ce qui entraîne une représentation incorrecte 010101111011000100 10110000000000, qui correspond au résultat incorrect.

Autres considérations

  • Si la multiplication donne une valeur comprise dans la plage entière, l'ajout de "L" ne fera pas de résultat différence.
  • Des débordements peuvent survenir lors de calculs intermédiaires. Même si le résultat final s'inscrit dans la plage entière, il est important de prendre en compte les débordements lors de l'exécution d'opérations arithmétiques avec de grandes valeurs.
  • Déplacer "L" au début de l'expression, comme 365L1000606024*30, garantit l'exactitude des multiplications qui pourraient dépasser une plage entière.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn