2014-09-15 2 views

답변

18

다른를 볼 수있는 방법은 테스트 벤치에서 빠른 시뮬레이션을 실행하는 두 개의 모드 사업자와 렘의 차이를 이해할 수 없었다 이 같은 방법을 사용하여 다음

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 

01,233,650

  • 개조가 a mod n
  • REM에 따라서 n 제수의 부호를 갖는다 mod 운영자가 제공 a rem n

에 따라서 a 배당의 기호를 갖 규칙 포함 정교한 설명이 (반올림 나누기) 나누기위한 잔여 물, 그래서 a = floor_div(a, n) * n + (a mod n). 이점은 a이 0을 통해 증가 할 때 반복되는 톱니파 그래프이며 일부 계산에서는 중요하다는 것을 a mod n이 나타냅니다.

연산자는 a/n의 정규 정수 나눗셈에 대한 나머지 부분을 0으로 잘라냅니다 (잘린 구분). 따라서 a = (a/n) * n + (a rem n)입니다.

0
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 
관련 문제