VHDL中mod和rem运算符的区别?

VHDL中mod和rem运算符的区别?,vhdl,Vhdl,我在VHDL编程中遇到了这些语句,无法理解mod和rem两个操作符之间的区别 9 mod 5 (-9) mod 5 9 mod (-5) 9 rem 5 (-9) rem 5 9 rem (-5) 例如,在测试台上运行快速模拟可以看出不同之处 使用如下流程的示例: process is begin report " 9 mod 5 = " & integer'image(9 mod 5); report " 9 re

我在VHDL编程中遇到了这些语句,无法理解mod和rem两个操作符之间的区别

    9 mod 5
    (-9) mod 5
    9 mod (-5)
    9 rem 5
    (-9) rem 5
    9 rem (-5)

例如,在测试台上运行快速模拟可以看出不同之处 使用如下流程的示例:

process is
begin
  report "  9  mod   5  = " & integer'image(9 mod 5);
  report "  9  rem   5  = " & integer'image(9 rem 5);
  report "  9  mod (-5) = " & integer'image(9 mod (-5));
  report "  9  rem (-5) = " & integer'image(9 rem (-5));
  report "(-9) mod   5  = " & integer'image((-9) mod 5);
  report "(-9) rem   5  = " & integer'image((-9) rem 5);
  report "(-9) mod (-5) = " & integer'image((-9) mod (-5));
  report "(-9) rem (-5) = " & integer'image((-9) rem (-5));
  wait;
end process;
结果表明:

# ** Note:   9  mod   5  =  4
# ** Note:   9  rem   5  =  4
# ** Note:   9  mod (-5) = -1
# ** Note:   9  rem (-5) =  4
# ** Note: (-9) mod   5  =  1
# ** Note: (-9) rem   5  = -4
# ** Note: (-9) mod (-5) = -4
# ** Note: (-9) rem (-5) = -4
有详细的描述,包括规则:

  • mod有除数符号,因此
    n
    a mod n
  • rem有红利的符号,因此
    a
    in
    a rem n
mod
运算符给出向下舍入的除法的余数(floorred除法),因此
a=floor\u div(a,n)*n+(a mod n)
。优点是当
a
增加甚至超过零时,
a mod n
是一个重复的锯齿图,这在某些计算中很重要

rem
运算符为向0(截断除法)舍入的常规整数除法
a/n
提供余数,因此
a=(a/n)*n+(a rem n)

For equal sign:
9/5=-9/-5=1.8 gets 1 
9 mod 5 = 9 rem 5
-9 mod -5 = -9 rem -5
-----------------------------------------
For unequal signs:
9/-5 = -9/5 = -1.8
In "mod" operator : -1.8 gets -2
In "rem" operator : -1.8 gets -1
----------------------------------------
example1: (9,-5)
9 = (-5*-2)-1  then:  (9 mod -5) = -1
9 = (-5*-1)+4  then:  (9 rem -5) = +4
----------------------------------------
example2: (-9,5)
-9 = (5*-2)+1  then:  (-9 mod 5) = +1
-9 = (5*-1)-4  then:  (-9 rem 5) = -4
----------------------------------------
example3: (-9,-5)
-9 = (-5*1)-4  then:  (-9 mod -5) = -4
-9 = (-5*1)-4  then:  (-9 rem -5) = -4
----------------------------------------
example4: (9,5)
9 = (5*1)+4  then:  (9 mod 5) = +4
9 = (5*1)+4  then:  (9 rem 5) = +4