En passant par l' opération Modulo (l'avenue dans laquelle j'ai pénétré en explorant la différence entre rem
etmod
), je suis tombé sur:
En mathématiques, le résultat de l'opération modulo est le reste de la division euclidienne. Cependant, d'autres conventions sont possibles. Les ordinateurs et les calculatrices ont différentes manières de stocker et de représenter des nombres; ainsi, leur définition de l'opération modulo dépend du langage de programmation et / ou du matériel sous-jacent.
Des questions:
- En passant par la division euclidienne, j'ai trouvé que le reste de cette opération est toujours positif (ou 0). Quelle limitation du matériel informatique sous-jacent oblige les concepteurs de langage de programmation à différer des mathématiques?
- Chaque langage de programmation a sa règle prédéfinie ou indéfinie selon laquelle le résultat de l'opération modulo obtient son signe. Quelle justification est adoptée lors de l'élaboration de ces règles? Et si le matériel sous-jacent est la préoccupation, les règles ne devraient-elles pas changer en conséquence, indépendamment du langage de programmation?
(-3)/2 == -1
. Cette définition peut être utile. Lorsque vous voulez %
être cohérent avec cette division, x == (x/y)*y + x % y
vous vous retrouvez avec la définition de %
utilisé en C #.