2013-05-01 30 views
10

Tôi xin lỗi nếu đây là một câu hỏi đơn giản nhưng tôi gặp khó khăn trong việc nắm bắt khái niệm phân chia mô-đun khi số đầu tiên nhỏ hơn số thứ hai. Ví dụ: khi 1% 4 cuốn sách của tôi cho biết phần còn lại là 1. Tôi không hiểu cách 1 là phần còn lại của 1% 4.
1/4 là 0,25. Tôi có nghĩ về phân chia modulus không chính xác?Phân chia mô đun khi số đầu tiên nhỏ hơn số thứ hai

Trả lời

10

Đầu tiên, trong Java,% là toán tử còn lại (không phải modulo), có ngữ nghĩa hơi khác nhau. Điều đó nói rằng, bạn cần phải suy nghĩ về phân chia chỉ số nguyên, như thể không có giá trị phân số. Hãy suy nghĩ về nó như là lưu trữ các mục mà không thể được chia: bạn có thể lưu trữ các mặt hàng bằng không kích thước 4 trong một lưu trữ của một công suất tổng thể. Dung lượng còn lại của bạn sau khi lưu trữ số lượng tối đa các mục là một. Tương tự, 13% 5 là 3, vì bạn có thể vừa với 2 mục hoàn chỉnh có kích thước 5 trong bộ nhớ có kích thước 13 và dung lượng còn lại là 13 - 2*5 = 3.

+0

tôi hiểu phần còn lại khi số đầu tiên lớn hơn số thứ hai. Vì vậy, tôi nhận được như thế nào 13% 5 là 3. Những gì tôi không hiểu là câu trả lời sẽ là gì nếu khi 5% 13. –

+0

Nếu mặt hàng của bạn lớn hơn dung lượng của bạn, bạn không bao giờ có thể phù hợp với dung lượng lưu trữ của mình. Vì vậy, kết quả là LUÔN LUÔN công suất tổng thể của bạn, mà vẫn chưa sử dụng (tức là, số đầu tiên - có thể bạn có nghĩa là '5% 13') – misberner

+0

Vâng tôi đã có nghĩa là 5% 13 và không phải là cách khác xung quanh. Vì vậy, nếu tôi nhận được những gì bạn đang nói câu trả lời cho 5% 13 là 5? Đúng không? –

4

Nếu bạn chia 1 cho 4, bạn nhận được 0 với phần còn lại là 1. Đó là tất cả các mô đun, phần còn lại sau khi chia.

+0

gì sẽ xảy ra nếu nó là 40% 160 –

+0

@yanivx cùng một điều, 0 phần còn lại 40, vì vậy câu trả lời là 40 –

2

Một cách khác để suy nghĩ về nó như là một đại diện cho số của bạn trong bội số của một số khác. I.e, a = n*b + r, trong đó b>r>=0. Trong trường hợp này, trường hợp của bạn là 1 = 0*4 + 1. (chỉnh sửa: chỉ nói về số dương)

0

Tôi nghĩ bạn đang nhầm lẫn giữa các toán tử %(Remainder)/(Division).

Khi bạn nói %, bạn cần phải tiếp tục chia cổ tức cho đến khi bạn nhận được phần còn lại 0 hoặc có thể kết thúc. Và những gì bạn nhận được cuối cùng được gọi là Remainder.

Khi bạn nói /, bạn chia cổ tức cho đến khi ước trở thành 1. Và sản phẩm cuối cùng bạn nhận được gọi Quotient

0

Một phương pháp tốt đẹp để xóa mọi thứ lên, Trong mô đun, nếu số đầu tiên là> số thứ hai, trừ số thứ hai từ số đầu tiên cho đến khi số đầu tiên nhỏ hơn số thứ hai.

17 % 5 = ? 
17 - 5 = 12 
12 % 5 = ? 
12 - 5 = 7 
7 % 5 = ? 
7 - 5 = 2 
2 % 5 = 2 

Do đó 17% ​​5, 12% 5, 7% 5 tất cả cho câu trả lời của 2. Điều này là do 2/5 = 0 (khi làm việc với số nguyên) với 2 như một phần còn lại.

0

Tôi sẽ thêm một ví dụ thực tế hơn cho những gì "Jean-Bernard Pellerin" đã nói.

Đúng là nếu bạn chia 1 cho 4 bạn nhận được 0 nhưng, Tại sao khi bạn làm 1% 4 bạn có 1 kết quả?

Về cơ bản đó là vì điều này:

n = a/b (integer), and 
m = a % b = a - (b * n) 

Vì vậy,

a b n = a/b b * n m = a%b 
1 4  0  0  1  
2 4  0  0  2 
3 4  0  0  3 
4 4  1  0  0 
5 4  1  4  1 

Kết luận: Trong khi một < b, kết quả của một% b sẽ là "một"

Các vấn đề liên quan