Wiele języków programowania ma operator „reszty”, który może być wykorzystywany jako operator modułu, gdy oba operandy są dodatnie; wspomniany operator jest często nazywany operatorem „modułu”, ponieważ jest to jego podstawowe zastosowanie. Języki mają na ogół takiego operatora, ponieważ sprzęt działający na wielu platformach sprzętowych automatycznie dostarcza resztę podczas wykonywania podziału, a obliczenie pozostałej części lub modułu za pomocą innych środków byłoby znacznie trudniejsze.
Nie znam historii wsparcia sprzętowego dla podpisanego podziału; wiele procesorów od lat zapewnia sprzęt, który może automatycznie wykonywać podpisany podział z zastrzeżeniem zasady, że jeśli a / b da (q, r), to -a / b lub a / -b da (-q, -r), ale Nie jestem pewien przypadków użycia, w których podział przy użyciu tej reguły jest szczególnie pomocny. W prawie każdym przypadku, w którym użyłem podziału na liczbę całkowitą lub operacji „modułu” na wartościach ujemnych, chciałem zaokrąglić w kierunku ujemnej nieskończoności na podziale i operacji na prawdziwym module (takiej, że (a + b) / b zawsze równa (a / b) +1 i (a + b)% b zawsze będzie równa% b.). Ponieważ operatorzy nie działają w ten sposób, konieczne jest przetestowanie znaku dywidendy i użycie innego kodu, gdy „ s negatywny - zasadniczo neguje jakąkolwiek korzyść z posiadania podpisanej instrukcji podziału. Ciekawi mnie, w jakim celu pomocna jest sprzętowa obsługa podziału podpisów.
Wracając do pierwotnego pytania, operator modułu jest często przydatny w sytuacjach, w których pewne rzeczy mają się zdarzać okresowo, albo w przestrzeni (np. Współrzędne graficzne), albo w czasie. Na przykład, jeśli chce się, aby zdarzenie miało miejsce co 15 sekund, czas do następnego zdarzenia wyniesie 15 - ((czas_czasu - czas_wystąpienia)% 15), przy założeniutime_of_an_occurrence
time_now
, że nie jest większy niż . Gdyby time_of_an_occurrence
były większe niż time_now
, operator modułu mógłby nadal używać tej samej formuły, pod warunkiem że odejmowanie nie przepełniło się, ale operator reszty będzie wymagał innej formuły.