Я действительно не понимаю, как работает деление модуля. Я рассчитывал 27 % 16
и закончил, 11
и я не понимаю почему.
Кажется, я не могу найти в Интернете объяснения в терминах непрофессионала. Может ли кто-нибудь подробно рассказать о том, что здесь происходит?
Большинство объяснений пропускают один важный шаг, давайте восполним пробел другим примером.
Учитывая следующее:
Функция модуля выглядит так:
Давайте выясним, почему это так.
Сначала выполните целочисленное деление , которое похоже на нормальное деление, за исключением того, что любое дробное число (также известное как остаток) отбрасывается:
Затем умножьте результат вышеуказанного деления (
2
) на наш divisor (6
):Наконец, вычтите результат вышеуказанного умножения (
12
) из нашего дивиденда (16
):Результат этого вычитания
4
, то остаток , тот же результат нашего модуля выше!источник
16 // 6 >>> 2
и16 / 6 >>> 2.6666666666666665
Возможно, пример с часами поможет вам разобраться в модуле.
Известное применение модульной арифметики - использование 12-часовых часов, в которых день делится на два 12-часовых периода.
Допустим, у нас сейчас это время: 15:00,
но вы также можете сказать, что это 15:00.
Это именно то, что делает modulo:
Этот пример лучше объяснен в Википедии: Статья в Википедии по модулю
источник
Простая формула для расчета модуля: -
Итак, 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
наb
.Дополнительные примеры см. В статье в Википедии .
источник
Хочу еще кое-что добавить:
легко вычислить по модулю, когда дивиденд больше / больше делителя
дивиденд = 5 делитель = 3
а что, если делитель меньше делимого
дивиденд = 3 делитель = 5
Это потому, что, поскольку 5 не может делить 3 напрямую, по модулю будет то, что есть дивиденд
источник
Надеюсь, эти простые шаги помогут:
20 / 3 = 6
; не включайте.6667
- просто игнорируйте3 * 6 = 18
20 - 18 = 2
, который является остатком по модулюисточник
Проще, если ваше число после десятичной дроби (0.xxx) будет коротким. Затем все, что вам нужно сделать, это умножить это число на число после деления.
Пример:
32 % 12 = 8
Вы делаете
32/12=2.666666667
Затем вы выбрасываете2
и сосредотачиваетесь на0.666666667
0.666666667*12=8
<- Это ваш ответ.(опять же, это просто, когда число после десятичной дроби короткое)
источник
Деление по модулю дает вам остаток от деления, а не частное.
источник
Допустим, у вас 17 мод 6.
какое общее число 6 даст вам самое близкое к 17, это будет 12, потому что если вы перейдете к 12, у вас будет 18, что больше, чем вопрос о 17 по модулю 6. Затем вы возьмете 12 и минус из 17, что даст вам ваш ответ, в данном случае 5.
17 мод 6 = 5
источник
Деление модуля довольно просто. Вместо частного используется остаток.
13/12 = 1R1, следовательно, 13% 12 = 1.
Это помогает думать о модуле как о «цикле».
Другими словами, для выражения
n % 12
результат всегда будет <12.Это означает , что последовательность для набора
0..100
дляn % 12
это:В этом свете модуль упругости, а также его использование становятся намного яснее.
источник
Единственное, что важно понять, это то, что модуль (обозначенный здесь%, как в C) определяется через евклидово деление .
Для любых двух
(d, q)
целых чисел всегда верно следующее :Как видите, значение
d%q
зависит от значенияd/q
. В общем случае для положительных целых чиселd/q
является усеченным к нулю , например 5/2 дает 2, следовательно:Однако для отрицательных целых чисел ситуация менее ясна и зависит от языка и / или стандарта. Например, -5/2 может возвращать -2 (с усечением до нуля, как и раньше), но также может возвращать -3 (с другим языком).
В первом случае:
а во втором:
Как было сказано ранее, просто запомните инвариант , то есть евклидово деление .
Дальнейшие подробности:
источник
Вы можете интерпретировать это так:
16 идет 1 раз в 27 перед тем, как пройти.
Таким образом, можно сказать, что 16 идет один раз из 27 с остатком 11.
По факту,
Другой пример:
Лунка 3 переходит 6 раз в 20 перед тем, как пройти.
Чтобы прибавить к 20, нам нужно 2, поэтому остаток выражения модуля равен 2.
источник
Это просто, оператор модуля (%) возвращает остаток после целочисленного деления. Возьмем, к примеру, ваш вопрос. Как 27% 16 = 11? Когда вы просто разделите 27 на 16, то есть (27/16), вы получите остаток как 11, и поэтому ваш ответ - 11.
источник
Напишите таблицу, начинающуюся с 0.
Продолжайте таблицу рядами.
Все в столбце 1 кратно 5. Все значения в столбце 2 кратны 5 с остатком 1. Теперь абстрактная часть: вы можете записать это (1) как 1/5 или как десятичное разложение. Оператор модуля возвращает только столбец или, иначе говоря, он возвращает остаток от деления в столбик. Вы имеете дело по модулю (5). Другой модуль, другая таблица. Подумайте о хэш-таблице.
источник
Когда мы разделим два целых числа, мы получим уравнение, которое выглядит следующим образом:
A / B = Q остаток R
A - дивиденд; B - делитель; Q - частное, а R - остаток
Иногда нас интересует только остаток, когда мы делим A на B. Для этих случаев существует оператор, называемый оператором по модулю (сокращенно mod).
Примеры
См. Статью об Академии Хана для получения дополнительной информации.
В информатике в хеш-таблице используется оператор Mod для хранения элемента, где A будет значениями после хеширования, B будет размером таблицы, а R - количеством слотов или ключом, в который вставлен элемент.
Для получения дополнительной информации см. Как работает хеш-таблица.
источник
Для меня это был лучший подход к пониманию оператора модуля. Я просто объясню вам на примерах.
Когда вы делите эти два числа, получается остаток. Вот как я это делаю.
Итак, что осталось до 16, это 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
источник