Подтвердить что ты не робот

Как работает модуль Divison

Я не понимаю, как работает модульное подразделение. Я вычислял 27 % 16 и заканчивал с помощью 11, и я не понимаю, почему.

Кажется, я не могу найти объяснение в нестандартных условиях онлайн. Может кто-нибудь подробно остановиться на том, что происходит здесь?

4b9b3361

Ответ 1

Результат modulo division - это остаток целочисленное деление данных номеров.

Это означает:

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

Ответ 2

В большинстве объяснений пропущен один важный шаг, давайте воспользуемся другим примером.

Учитывая следующее:

Dividend: 16
Divisor: 6

Функция модуля выглядит следующим образом:

16 % 6 = 4

Позвольте определить, почему это так.

Сначала выполните целочисленное деление, которое похоже на обычное деление, за исключением того, что любое дробное число (иначе остаток) отбрасывается:

16 / 6 = 2

Затем умножьте результат вышеприведенного деления (2) на наш делитель (6):

2 * 6 = 12

Наконец, вычтите результат умножения (12) из нашего дивиденда (16):

16 - 12 = 4

Результат этого вычитания, 4, остаток, является тем же самым результатом нашего модуля выше!

Ответ 3

Возможно, пример с часами может помочь вам разобраться в модуле.

Знакомое использование модульной арифметики - это ее использование в 12-часовом режиме, когда день делится на два 12-часовых периода.

Предположим, что на данный момент у нас есть: 15:00
Но вы также можете сказать, что это 3 часа дня

Это то, что по модулю делает:

15 / 12 = 1, remainder 3

Вы найдете этот пример лучше объясненным в wikipedia: Статья в Wikipedia Modulo

Ответ 4

Простая формула для вычисления модуля: -

[Dividend-{(Dividend/Divisor)*Divisor}]

Итак, 27% 16: -

27- {(27/16) * 16}

27- {1 * 16}

Ответ = 11

Примечание

Все вычисления выполняются с целыми числами. В случае десятичного отношения часть после десятичного числа должна быть проигнорирована/усечена.

например: 27/16 = 1,6875 следует принимать за 1 только в вышеуказанной формуле. 0,6875 игнорируется.

Компиляторы компьютерных языков обрабатывают целое число с десятичной частью одинаково (путем усечения после десятичной) также

Ответ 5

Оператор модуля принимает оператор деления и возвращает все оставшееся из этого вычисления, так называемые "оставшиеся" данные, например 13/5 = 2. Это означает, что осталось 3 или осталось от этот расчет. Зачем? потому что 2 * 5 = 10. Таким образом, 13 - 10 = 3.

Оператор модуля выполняет все эти вычисления для вас, 13% 5 = 3.

Ответ 6

разделение по модулю просто следующее: разделите два числа и верните только остаток

27/16 = 1 с оставленными 11, поэтому 27% 16 = 11

ditto 43/16 = 2 с оставленными 11, поэтому 43% 16 = 11 тоже

Ответ 7

Очень просто: a % b определяется как остальная часть деления a на b.

Подробнее см. статью в википедии.

Ответ 8

Я надеюсь, что эти простые шаги помогут:

20 % 3 = 2 
  • 20 / 3 = 6; не включайте .6667 - просто игнорируйте его
  • 3 * 6 = 18
  • 20 - 18 = 2, который является остатком по модулю

Ответ 9

Я хотел бы добавить еще одну вещь:

легко вычислить по модулю, когда дивиденд больше/больше, чем divisor

дивиденд = 5 divisor = 3

5% 3 = 2

3)5(1
  3
-----
  2

но что, если делитель меньше дивиденда

дивиденд = 3 divisor = 5

3% 5 = 3 как

Это потому, что, поскольку 5 не может делить 3 напрямую, по модулю будет дивиденд

Ответ 10

Разделение по модулю дает вам остальную часть деления, а не частное.

Ответ 11

Допустим, у вас есть 17 мод 6.

что всего 6 приблизит вас к 17, это будет 12, потому что, если вы перейдете через 12, у вас будет 18, что больше того, что вопрос 17 мода 6. Затем вы получите 12 и минус с 17, что даст вам ваш ответ, в этом случае 5.

17 mod 6 = 5

Ответ 12

Легче, если ваш номер после десятичного числа (0.xxx) короток. Затем все, что вам нужно сделать, - это умножить это число на число после деления.

Пример: 32 % 12 = 8

Вы выполняете 32/12=2.666666667 Затем вы отбрасываете 2 и фокусируетесь на 0.666666667 0.666666667*12=8 < - Это ваш ответ.

(опять же, просто, когда число после десятичного числа короче)

Ответ 13

Разделение по модулю довольно просто. Он использует остаток вместо частного.

    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 результат будет всегда быть < 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}

В этом свете модуль, а также его использование становятся намного яснее.

Ответ 14

Это просто, оператор модуля (%) возвращает остаток после целочисленного деления. Возьмем пример вашего вопроса. Как 27% 16 = 11? Когда вы просто разделите 27 на 16, то (27/16), вы получите остаток в 11, и именно поэтому ваш ответ равен 11.

Ответ 15

Выпишите таблицу, начинающуюся с 0.

{0,1,2,3,4}

Продолжить таблицу в строках.

{0,1,2,3,4}
{5,6,7,8,9}
{10,11,12,13,14}

Все в столбце один кратно 5. Все в столбце 2 является кратное 5 с 1 в качестве остатка. Теперь абстрактная часть: вы можете написать что (1) как 1/5 или как десятичное разложение. Оператор модуля возвращается только столбец или иным способом мышления, он возвращает остаток на длинные разделение. Вы имеете дело с модулем (5). Различные модули, разные таблицы. Подумайте о хэш-таблице.

Ответ 16

Когда мы разделим два целых числа, мы получим уравнение, которое выглядит следующим образом:

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.

Подробнее см. Статья Академии Хана.

В информатике в таблице Hash используется оператор Mod для хранения элемента, где A будет значением после хэширования, B будет размером таблицы, а R - количеством слотов или ключей, в которые вставлен элемент.

См. Как работает хэш-таблица для получения дополнительной информации

Ответ 17

Единственная важная вещь для понимания - это то, что модуль (обозначаемый здесь как%, как в C) определяется через евклидово деление.

Для любых двух (d, q) целых всегда верно следующее:

d = ( d / q ) * q + ( d % q )

Как видите, значение d%q зависит от значения d/q. Обычно для положительных целых чисел d/q усекается до нуля, например, 5/2 дает 2, следовательно:

5 = (5/2)*2 + (5%2) => 5 = 2*2 + (5%2) => 5%2 = 1

Однако для отрицательных целых чисел ситуация менее ясна и зависит от языка и/или стандарта. Например, -5/2 может возвращать -2 (усеченный до нуля, как и раньше), но также может возвращать -3 (с другим языком).

В первом случае:

-5 = (-5/2)*2 + (-5%2) => -5 = -2*2 + (-5%2) => -5%2 = -1

но во втором:

-5 = (-5/2)*2 + (-5%2) => -5 = -3*2 + (-5%2) => -5%2 = +1

Как сказано выше, просто запомните инвариант, который является евклидовым делением.

Более подробная информация:

Ответ 18

Это был лучший подход для меня для понимания оператора модуля. Я просто объясню вам примеры.

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