Деление по модулю, когда первое число меньше второго
Я прошу прощения, если это простой вопрос, но у меня возникли проблемы с пониманием концепции деления модуля, когда первое число меньше второго числа. Например, когда 1 % 4 в моей книге говорит, что остаток равен 1. Я не понимаю, как 1 является остатком 1 % 4.
1 / 4 составляет 0,25. Я неправильно думаю о делении модуля?
6 ответов
во-первых, в Java % является оператором остатка (не по модулю), который имеет немного другую семантику.
Тем не менее, вам нужно думать в терминах только целочисленного деления, как будто нет дробных значений. Подумайте об этом как о хранении элементов, которые нельзя разделить: вы можете хранить нулевые элементы размера 4 в хранилище общей емкости один. Оставшаяся емкость после хранения максимального количества элементов равна единице. Аналогично, 13%5 равно 3, так как вы можете поместить 2 полных элемента размера 5 в хранилище размера 13, а остальная емкость 13 - 2*5 = 3
.
другой способ думать об этом как о представлении вашего числа в кратных другого числа. Т. е. 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 в качестве остатка.