Вот один фрагмент кода кода
public class Test {
public static void main(String[] args) {
int a=103;
int b=5;
int c=a%b;
}
}
Теперь, если вы видите скомпилированный код этого файла, вы увидите
public static void main(java.lang.String[]);
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=4, args_size=1
0: bipush 103
2: istore_1
3: iconst_5
4: istore_2
5: iload_1
6: iload_2
7: irem
8: istore_3
9: return
bipush - нажмите байт на стек, как целочисленное значение, т. е. 103
istore_1 -Попляет int из стека и сохраняет его в локальной переменной в текущем кадре.
и в 3: iconst_5 постоянное целое нажимается на stack
istore_2 делает то же самое, что и istore_1, только переменная с именем изменена.
Затем 5: iload_1
и 6:iload_2
обе переменные снова помещаются в стек для операций
now at 7:irem the remainder operator works which you are calling as modulo.
Теперь как работают операторы Remainder. Это Pops два ints (значение a и b) из стека операндов, делит a на b, вычисляет остаток и возвращает остатки int обратно в стек. Остаток равен (b - ((a / b) * b)). Это то, что используется оператором% в Java.