【问题标题】:Difference between mod and rem operators in VHDL?VHDL中的mod和rem运算符之间的区别?
【发布时间】:2014-11-09 00:41:31
【问题描述】:

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

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

【问题讨论】:

标签: vhdl


【解决方案1】:

查看不同之处的一种方法是在测试台上运行快速模拟, 使用这样的过程的示例:

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

Wikipedia - Modulo operation 有详细的描述,包括规则:

  • mod 有除数符号,因此 na mod n
  • rem 有股息的迹象,因此aa rem n

mod 运算符给出向下舍入的除法(下除法)的余数,因此为 a = floor_div(a, n) * n + (a mod n)。优点是a mod n 是一个重复的锯齿图,当a 甚至从零开始增加时,这在某些计算中很重要。

rem 运算符给出了正则整数除法 a / n 的余数,它向 0 舍入(截断除法),所以是 a = (a / n) * n + (a rem n)

【讨论】:

    【解决方案2】:
    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
    

    【讨论】:

      猜你喜欢
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      • 2016-05-18
      • 2011-10-22
      • 2012-10-06
      • 2011-05-24
      • 1970-01-01
      相关资源
      最近更新 更多