Przechodząc przez operację Modulo (aleję, którą wszedłem, badając różnicę między rem
imod
) natknąłem się na:
W matematyce wynikiem operacji modulo jest pozostała część podziału euklidesowego. Możliwe są jednak inne konwencje. Komputery i kalkulatory mają różne sposoby przechowywania i reprezentowania liczb; dlatego ich definicja działania modulo zależy od języka programowania i / lub podstawowego sprzętu.
Pytania:
- Przechodząc przez dywizję euklidesową odkryłem, że zakończenie tej operacji jest zawsze dodatnie (lub 0). Jakie ograniczenia podstawowego sprzętu komputerowego zmuszają projektantów języków programowania do odróżnienia się od matematyki?
- Każdy język programowania ma zdefiniowaną lub niezdefiniowaną regułę, zgodnie z którą wynik operacji modulo otrzymuje swój znak. Jakie uzasadnienie przyjmuje się przy tworzeniu tych zasad? A jeśli chodzi o podstawowy sprzęt, to czy zasady nie powinny się zmieniać zgodnie z tym, niezależnie od języka programowania?
(-3)/2 == -1
. Ta definicja może być przydatna. Jeśli chcesz %
zachować spójność z tym podziałem, to kończysz x == (x/y)*y + x % y
się definicją %
używaną w C #.