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

Извиняюсь, если это простой вопрос, но у меня возникли проблемы с пониманием понятия модульного деления, когда первое число меньше второго. Например, когда 1% 4 в моей книге говорится, что остаток равен 1. Я не понимаю, как 1 - остаток 1% 4.
1/4 - 0.25. Я неправильно думаю о модульном подразделении?

Ответ 1

Во-первых, в Java% - это оператор остатка (немодуля), который имеет несколько другую семантику. Тем не менее, вам нужно думать в терминах целочисленного деления, как если бы не было дробных значений. Подумайте об этом как о хранении предметов, которые нельзя разделить: вы можете хранить нулевые предметы размером 4 в хранилище общей емкости. Ваша оставшаяся емкость после хранения максимального количества элементов - одна. Аналогично, 13% 5 равно 3, так как вы можете поместить 2 полных элемента размером 5 в хранилище размером 13, а оставшаяся емкость 13 - 2*5 = 3.

Ответ 2

Если вы разделите 1 на 4, вы получите 0 с остатком 1. То, что весь модуль равен, остаток после деления.

Ответ 3

Еще один способ подумать об этом как о представлении вашего числа в нескольких числах другого числа. I.e, a = n*b + r, где b>r>=0. В этом смысле ваш случай дает 1 = 0*4 + 1. (редактировать: говорить только о положительных числах)

Ответ 4

Я думаю, вы запутались между операторами %(Remainder) и /(Division).

Когда вы говорите %, вам нужно продолжать делиться дивидендом, пока не получите остаток 0 или возможный конец. И то, что вы получаете в конце, называется Remainder.

Когда вы говорите /, вы делите дивиденд, пока делитель не станет равным 1. И конечный продукт, который вы получаете, называется Quotient

Ответ 5

Еще один приятный метод, чтобы прояснить ситуацию, В модуле, если первое число является вторым номером, вычтите второе число из первого, пока первое число не станет меньше второго.

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 в качестве остатка.

Ответ 6

Я собираюсь добавить более практичный пример того, что уже сказал "Жан-Бернард Пеллерин".

Правильно, что если вы разделите 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

Заключение. В то время как a < b, результат% b будет "a"