Проходячи через модульну операцію (проспект, в який я входив, вивчаючи різницю між rem
іmod
), я натрапив:
У математиці результатом модульної операції є залишок поділу Евкліда. Однак можливі й інші конвенції. Комп'ютери та калькулятори мають різні способи зберігання та представлення номерів; таким чином, їх визначення модульної роботи залежить від мови програмування та / або базового обладнання.
Запитання:
- Пройшовши Евклідовий відділ, я виявив, що продовження цієї операції завжди є позитивним (або 0). Яке обмеження базового комп'ютерного обладнання змушує дизайнерів мови програмування відрізнятися від математики?
- Кожна мова програмування має заздалегідь визначене або невизначене правило, згідно з яким результат модульної операції отримує його знак. Яке обґрунтування прийняте під час прийняття цих правил? І якщо основне обладнання викликає занепокоєння, то чи не повинні змінювати правила відповідно до цього, незалежно від мови програмування?
(-3)/2 == -1
. Це визначення може бути корисним. Коли ви хочете %
бути узгодженими з цим підрозділом, x == (x/y)*y + x % y
ви закінчуєте визначення %
використовуваного в C #.