2014-09-15 29 views

Trả lời

18

Một cách để xem sự khác nhau là để chạy một mô phỏng nhanh chóng trong một cái ghế dài thử nghiệm, cho dụ sử dụng một quá trình như thế này:

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; 

Nó cho thấy kết quả là:

# ** 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 có một mô tả phức tạp, bao gồm các quy tắc:

  • mod có dấu hiệu của sự ước, do đó n trong a mod n
  • rem có dấu hiệu của cổ tức, do đó a trong a rem n

Nhà điều hành mod cho phần còn lại cho một bộ phận làm tròn xuống (phân chia sàn), vì vậy a = floor_div(a, n) * n + (a mod n). Lợi thế là a mod n là biểu đồ răng cưa lặp lại khi a đang tăng lên ngay cả bằng không, điều quan trọng trong một số phép tính.

Toán tử rem cho số còn lại cho số nguyên thường xuyên phân chia a/n làm tròn về 0 (cắt ngắn), vì vậy 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 
Các vấn đề liên quan