Арифметические операторы

Если второй операнд оператора деления или модуля равен нулю, то результатом будет X.

Если любой из операндов оператора возведения в степень является вещественным, то результат также будет вещественным. Результат будет равен 1, если второй операнд оператора возведения в степень равен 0.

Пример

// <переменная/выражение> <оператор> <переменная/выражение>
// <переменная> <оператор>= <переменная/выражение>
 module arithmetic_operators_tb;
    reg [7:0] a, b;
    real c, d;
    initial begin
        a = 8'd4; b = 8'd5;
        $display("a = %0d; b = %0d", a, b);

        $display("a + b = %0d", a + b);    // сложение
        $display("a - b = %0d", a - b);    // вычитание
        $display("a * b = %0d", a * b);    // умножение
        $display("a / b = %0d", a / b);    // деление
        $display("a %% b = %0d", a % b);   // остаток от деления
        $display("a ** b = %0d", a ** b);  // возведение в степень

        $display("a++ = %0d", a++);    // инкремент (постфикс)
        $display("++a = %0d", ++a);    // инкремент (префикс)
        $display("a-- = %0d", a--);    // декремент (постфикс)
        $display("--a = %0d", --a);    // декремент (префикс)

        $display("a * 8'd0 = %0d", a * 8'd0);
        $display("a / 8'd0 = %0d", a / 8'd0);
        $display("a %% 8'd0 = %0d", a % 8'd0);
        $display("a ** 8'd0 = %0d", a ** 8'd0);

        c = 1.5; d = 3.14;
        $display("c = %0f; d = %0f", c, d);
        $display("2 ** c = %0f", 2 ** c);
        $display("d ** 3 = %0f", d ** 3);
    end
endmodule

Результат исполнения

a = 4; b = 5
a + b = 9
a - b = 255
a * b = 20
a / b = 0
a % b = 4
a ** b = 0
a++ = 4
++a = 6
a-- = 6
--a = 4
a * 8'd0 = 0
a / 8'd0 = x
a % 8'd0 = x
a ** 8'd0 = 1
c = 1.500000; d = 3.140000
2 ** c = 2.828427
d ** 3 = 30.959144

Last updated