Trải qua hoạt động Modulo (đại lộ tôi đã nhập trong khi khám phá sự khác biệt giữa rem
vàmod
) tôi đã đi qua:
Trong toán học, kết quả của phép toán modulo là phần còn lại của phép chia Euclide. Tuy nhiên, các quy ước khác là có thể. Máy tính và máy tính có nhiều cách lưu trữ và biểu diễn số khác nhau; do đó định nghĩa của họ về hoạt động modulo phụ thuộc vào ngôn ngữ lập trình và / hoặc phần cứng cơ bản.
Câu hỏi:
- Đi qua bộ phận Euclide tôi thấy rằng phần còn lại của hoạt động này luôn dương (hoặc 0). Giới hạn nào của phần cứng máy tính cơ bản buộc các nhà thiết kế ngôn ngữ lập trình khác với toán học?
- Mọi ngôn ngữ lập trình đều có quy tắc được xác định trước hoặc không xác định theo quy tắc mà kết quả của hoạt động modulo có được. Lý do nào được thông qua trong khi đưa ra các quy tắc này? Và nếu phần cứng cơ bản là mối quan tâm thì quy tắc không nên thay đổi theo đó, độc lập với ngôn ngữ lập trình?
(-3)/2 == -1
. Định nghĩa này có thể hữu ích. Khi bạn muốn %
thống nhất với bộ phận này, x == (x/y)*y + x % y
bạn sẽ kết thúc với định nghĩa %
được sử dụng trong C #.