Деление по модулю, когда первое число меньше второго

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

6 ответов


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


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


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


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

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


Я думаю, вы путаете между %(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 в качестве остатка.