Багато мов програмування мають оператор "залишок", який може використовуватися як оператор модуля, коли обидва операнди є позитивними; зазначений оператор часто називають оператором "модуль", оскільки це його первинне використання. Мови, як правило, мають такого оператора, оскільки багато апаратних платформ підрозділів апаратного забезпечення автоматично постачають залишок під час виконання поділу, а обчислення залишку або модуля будь-якими іншими засобами було б набагато складніше.
Я не знаю історії апаратної підтримки підписаного підрозділу; багато процесорів роками пропонують обладнання, яке може автоматично виконувати підписаний поділ за умови, що якщо a / b дасть (q, r), то -a / b або / -b дасть (-q, -r), але Я не впевнений у випадках використання, коли поділ із використанням цього правила особливо корисний. Майже в кожному випадку, коли я використовував операції з цілим поділом або "модулем" на від'ємних значеннях, я хотів обернути в бік нескінченність безперервності на поділ і дійсну модульну операцію (таку, що (a + b) / b завжди рівний (a / b) +1 і (a + b)% b завжди буде рівний% b.). Оскільки оператори не працюють таким чином, необхідно перевірити ознаку дивіденду та використовувати інший код, коли він ' s негатив - по суті, заперечуючи будь-яку вигоду від того, щоб в першу чергу мати підписану інструкцію про поділ. Мені цікаво, для яких цілей корисна підтримка підписаного підрозділу в апараті.
Повертаючись до початкового питання, оператор модуля часто корисний у ситуаціях, коли певні речі повинні відбуватися періодично, або в просторі (наприклад, графічні координати), або в часі. Наприклад, якщо ви хочете, щоб подія відбувалась кожні 15 секунд, час до наступної події становитиме 15 - ((time_now - time_of_an_occurrence)% 15), припустимоtime_of_an_occurrence
time_now
, що це не більше ніж . Якщо time_of_an_occurrence
більше, ніж time_now
оператор модуля може продовжувати використовувати ту саму формулу, якщо віднімання не переповнюється, але оператор, що залишився, потребує іншої формули.