ПрогрессБарс и Эспрессо

Вот один фрагмент кода кода

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.

20
задан ligi 22 October 2015 в 19:30
поделиться