Как Работает Модуль Цикл Работы
Я действительно не понимаю, как работает модульное деление.
Я рассчитывал 27 % 16
и заканчивается 11
и я не понимаю, почему.
Я не могу найти объяснение в терминах непрофессионала в интернете. Может ли кто-нибудь рассказать на очень высоком уровне о том, что здесь происходит?
17 ответов:
результат a деление по модулю это остаток от целочисленное деление из приведенных цифр.
это значит:
27 / 16 = 1, remainder 11 => 27 mod 16 = 11
другие примеры:
30 / 3 = 10, remainder 0 => 30 mod 3 = 0 35 / 3 = 11, remainder 2 => 35 mod 3 = 2
большинство объяснений пропустить один важный шаг, давайте заполнить пробел, используя другой пример.
учитывая следующее:
Dividend: 16 Divisor: 6
The функция модули выглядит так:
16 % 6 = 4
давайте определим, почему это так.
во-первых, проанализировать целочисленное деление, который похож на нормальное деление, за исключением любого дробного числа (a.k.a. остаток) является отброшено:
16 / 6 = 2
затем, умножение результат вышеуказанного деления (
2
) С делитель (6
):2 * 6 = 12
наконец, вычесть в результате умножения (
12
) из нашего дивиденды (16
):16 - 12 = 4
результат этого вычитания,
4
на остаток, это тот же результат нашего модуль выше!
возможно, пример с часами может помочь вам понять модуль.
привычным использованием модульной арифметики является ее использование в 12-часовых часах, в которых день разделен на два 12-часовых периода.
допустим, у нас есть в настоящее время на этот раз: 15:00
Но вы также можете сказать, что это 3 часаэто именно то, что делает модуль:
15 / 12 = 1, remainder 3
вы найдете этот пример лучше объяснить на Википедия: Википедия По Модулю Статья
простая формула для расчета модуля :-
[Dividend-{(Dividend/Divisor)*Divisor}]
Итак, 27 % 16: -
27- {(27/16)*16}
27-{1*16}
ответ= 11
Примечание:
все вычисления с целыми числами. В случае десятичного отношения часть после десятичного числа должна быть проигнорирована / усечена.
например: 27/16= 1.6875 должно быть принято как только 1 в вышеупомянутой формуле. 0.6875 это игнорируемый.
компиляторы компьютерных языков обрабатывают целое число с десятичной частью таким же образом (путем усечения после десятичной), а также
оператор модуля принимает оператор деления и возвращает все, что осталось от этого вычисления, "оставшиеся" данные, так сказать, такие как 13 / 5 = 2. Это означает, что осталось 3 или осталось от этого расчета. Зачем? потому что 2 * 5 = 10. Таким образом, 13 - 10 = 3.
оператор модуля делает все вычисления для вас 13 % 5 = 3.
модуль деления просто так: разделить два числа и вернуть только остаток
27 / 16 = 1 с 11 осталось, поэтому 27 % 16 = 11
то же самое 43 / 16 = 2 с 11 осталось так 43% 16 = 11 тоже
очень просто:
a % b
определяется как остаток от деленияa
byb
.посмотреть статья в Википедии для получения дополнительных примеров.
Я надеюсь, что эти простые шаги помогут:
20 % 3 = 2
20 / 3 = 6
; не включают.6667
– просто игнорировать его3 * 6 = 18
20 - 18 = 2
, который является остатком от деления
Допустим, у вас есть 17 mod 6.
что в общей сложности 6 даст вам ближе всего к 17, это будет 12, потому что если вы перейдете через 12 у вас будет 18, что больше, чем вопрос 17 mod 6. Затем вы возьмете 12 и минус от 17, которые дадут вам ваш ответ, в этом случае 5.
17 mod 6=5
модуль деления довольно просто. Он использует остаток вместо частного.
1.0833... <-- Quotient __ 12|13 12 1 <-- Remainder 1.00 <-- Remainder can be used to find decimal values .96 .040 .036 .0040 <-- remainder of 4 starts repeating here, so the quotient is 1.083333...
13/12 = 1R1, ergo 13%12 = 1.
это помогает думать о модуле как о "цикле".
другими словами, для выражения
n % 12
, результат всегда бытьэто означает последовательность для набора
0..100
наn % 12
- это:{0,1,2,3,4,5,6,7,8,9,10,11,0,1,2,3,4,5,6,7,8,9,10,11,0,[...],4}
в этом свете модуль, а также его использование, становится много более ясный.
проще, когда ваше число после десятичной (0.xxx) коротко. Тогда все, что вам нужно сделать, это умножить это число на число после деления.
пример:
32 % 12 = 8
ты
32/12=2.666666667
Тогда вы бросаете2
прочь, и сосредоточьтесь на0.666666667
0.666666667*12=8
(опять же, только легко, когда число после десятичной короткая)
Я хотел бы добавить еще одно:
легко вычислить по модулю, когда дивиденд больше / больше, чем делитель
дивиденды = 5 делитель = 3
5 % 3 = 2
3)5(1 3 ----- 2
но что, если делитель меньше делимого
дивиденды = 3 делитель = 5
3 % 5 = 3 ?? как
это потому, что, поскольку 5 не может разделить 3 напрямую, по модулю будет какой дивиденд это
Это просто, оператор модуля (%) возвращает остаток после целочисленного деления. Давайте возьмем пример вашего вопроса. Как 27 % 16 = 11? Когда вы просто делите 27 на 16 т. е. (27/16), то вы получаете остаток как 11, и именно поэтому ваш ответ 11.
выпишите таблицу, начиная с 0.
{0,1,2,3,4}
продолжить таблицу в строках.
{0,1,2,3,4} {5,6,7,8,9} {10,11,12,13,14}
все в столбце один кратно 5. Все в колонке 2 является a кратно 5 с 1 в качестве остатка. Теперь абстрактная часть: вы можете написать что (1) Как 1/5 или как десятичное расширение. Оператор модуля возвращает только столбец, или по-другому думая, он возвращает остаток на долго деление. Вы имеете дело с модулем (5). Другой модуль, различные стол. Подумайте о хэш-таблице.
при делении двух целых чисел мы получим уравнение, которое выглядит следующим образом:
A / B =Q остаток R
a-дивиденд; B-делитель; Q-частное, а R-остаток
иногда нас интересует только то, что остается, когда мы делим A на B. Для этих случаев существует оператор, называемый оператором по модулю (сокращенно mod).
примеры
16/5= 3 Remainder 1 i.e 16 Mod 5 is 1. 0/5= 0 Remainder 0 i.e 0 Mod 5 is 0. -14/5= 3 Remainder 1 i.e. -14 Mod 5 is 1.
посмотреть Академия Хана Статья для получения дополнительной информации.
в информатике хэш-таблица использует оператор Mod для хранения элемента, где A будет значениями после хэширования, B будет размером таблицы, а R-количеством слотов или ключом, в который вставляется элемент.
посмотреть как работает хэш-таблица работает для получения дополнительной информации
это был лучший подход для меня для понимания оператора модуля. Я просто объясню вам на примерах.
16 % 3
когда вы делите эти два числа, остаток является результатом. Это путь, как я это делаю.
16 % 3 = 3 + 3 = 6; 6 + 3 = 9; 9 + 3 = 12; 12 + 3 = 15
Итак, что осталось до 16-это 1
16 % 3 = 1
вот еще один пример:
16 % 7 = 7 + 7 = 14
что будет в 16? Это2
16 % 7 = 2
еще один:
24 % 6 = 6 + 6 = 12; 12 + 6 = 18; 18 + 6 = 24
. Так что остаток равен нулю,24 % 6 = 0