Прошу прощения, если это простой вопрос, но у меня возникли проблемы с пониманием понятия модульного деления, когда первое число меньше второго. Например, когда 1% 4 в моей книге говорится, что остаток равен 1. Я не понимаю, как 1 является остатком 1% 4.
1/4 составляет 0,25. Я неправильно думаю о модульном подразделении?Разделение по модулю, когда первое число меньше второго номера
ответ
Во-первых, на Java,% является оператором остатка (немодуля), который имеет несколько другую семантику. Тем не менее, вам нужно думать в терминах целочисленного деления, как если бы не было дробных значений. Подумайте об этом как о хранении предметов, которые нельзя разделить: вы можете хранить нулевые предметы размером 4 в хранилище общей емкости. Ваша оставшаяся емкость после хранения максимального количества элементов - одна. Аналогично, 13% 5 равно 3, так как вы можете поместить 2 полных элемента размером 5 в хранилище размером 13, а оставшаяся емкость - 13 - 2*5 = 3
.
Если вы разделите 1 на 4, вы получите 0 с остатком 1. Это все модуль, остаток после деления.
Что произойдет, если это будет 40% 160 –
@yanivx то же самое, 0 осталось 40, так что ответ равен 40 –
Еще один способ подумать об этом как о представлении вашего номера в нескольких экземплярах другого номера. I.e, a = n*b + r
, где b>r>=0
. В этом смысле ваш случай дает 1 = 0*4 + 1
. (изменить: говорить только о положительных числах)
Я думаю, вы смущены между %(Remainder)
и /(Division)
операторами.
Когда вы говорите %
, вам нужно продолжать делиться дивидендом, пока не получите остаток 0 или возможный конец. И то, что вы получаете в конце, называется Remainder
.
Когда вы говорите /
, вы разделите дивиденд до делителя становится 1. И конечный продукт вы получите называется Quotient
Другим хорошим способом, чтобы очистить вещи, по модулю, если первое число> второе число, вычитайте второе число из первого, пока первое число не станет меньше второго.
17 % 5 = ?
17 - 5 = 12
12 % 5 = ?
12 - 5 = 7
7 % 5 = ?
7 - 5 = 2
2 % 5 = 2
Поэтому 17% 5, 12% 5, 7% 5 все они дают ответ 2. Это потому, что 2/5 = 0 (при работе с целыми числами) с 2 в качестве остатка.
Я собираюсь добавить более практичный пример того, что уже сказал «Жан-Бернард Пеллерин».
Правильно, если вы разделите 1 на 4, вы получите 0, но, почему, когда вы делаете 1% 4, у вас есть 1 результат?
В основном это происходит потому, что это:
n = a/b (integer), and
m = a % b = a - (b * n)
Так,
a b n = a/b b * n m = a%b
1 4 0 0 1
2 4 0 0 2
3 4 0 0 3
4 4 1 0 0
5 4 1 4 1
Заключение: В то время как < б, результат% б будет ""
. Я понимаю остаточное деление, когда первое число больше второго. Так что я понимаю, как 13% 5. 3. Я не понимаю, каков будет ответ, если при 5% 13. –
Если ваш товар больше вашей емкости, вы никогда не сможете поместить его в свое хранилище. Поэтому результат ВСЕГДА ваша общая емкость, которая остается неиспользованной (т. Е. Первое число - вы, вероятно, означало «5% 13») – misberner
Да, я действительно имел в виду 5% 13, а не наоборот. Итак, если я получу то, что вы говорите, ответ на 5% 13 равен 5? Это верно? –