Modulus Divison hoạt động như thế nào


105

Tôi không thực sự hiểu cách phân chia mô-đun hoạt động. Tôi đã tính toán 27 % 16và kết thúc với11 và tôi không hiểu tại sao.

Tôi dường như không thể tìm thấy lời giải thích trong thuật ngữ của giáo dân trên mạng. Ai đó có thể giải thích ở mức rất cao về những gì đang xảy ra ở đây không?

Câu trả lời:


107

Kết quả của phép chia modulo là phần còn lại của phép chia số nguyên của các số đã cho.

Điều đó có nghĩa là:

27 / 16 = 1, remainder 11
=> 27 mod 16 = 11

Những ví dụ khác:

30 / 3 = 10, remainder 0
=> 30 mod 3 = 0

35 / 3 = 11, remainder 2
=> 35 mod 3 = 2

66
xin đừng làm điều này sai cách, nhưng các ví dụ của bạn không rõ ràng bất cứ điều gì cho một người hoàn toàn không có manh mối điều gì đang xảy ra với divison điều độ. Bạn đã bỏ qua các bước rất quan trọng giải thích phần còn lại đến từ đâu. Câu trả lời của Marcin M. dưới đây đã giải thích quá trình này tốt hơn. Vui lòng xem xét chi tiết hơn trong các câu trả lời trong tương lai cho những người trong chúng ta có thể không nắm được khái niệm nào. Cảm ơn bạn đã là một thành viên đóng góp cho cộng đồng! Những người giống như bạn giúp tôi và tiếp tục giúp tôi trên hành trình giáo dục của tôi :)
Soundfx4

Wikipedia mặc dù vậy, mô đun và phần còn lại không giống nhau. Một số ngôn ngữ có một, một số khác, một số cả hai và một số không xác định.
Marquis of Lorne,

156

Hầu hết các giải thích đều bỏ sót một bước quan trọng, hãy lấp đầy khoảng trống bằng cách sử dụng một ví dụ khác.

Cho những điều sau:

Dividend: 16
Divisor: 6

Hàm mô-đun trông như thế này:

16 % 6 = 4

Hãy xác định tại sao lại như vậy.

Đầu tiên, thực hiện phép chia số nguyên , tương tự như phép chia bình thường, ngoại trừ bất kỳ số phân số nào (còn gọi là phần dư) bị loại bỏ:

16 / 6 = 2

Sau đó, nhân kết quả của phép chia trên ( 2) với số chia ( 6) của chúng ta :

2 * 6 = 12

Cuối cùng, trừ kết quả của phép nhân trên ( 12) từ chúng tôi cổ tức ( 16):

16 - 12 = 4

Kết quả của phép trừ này, 4thì còn lại , cũng giống kết quả của chúng tôi mô đun ở trên!


1
Làm thế nào để bạn nhận được 2 trong số 16/6 chứ không phải 2,6666666667? Bạn có nên luôn bỏ qua số 0, ...? Tại sao?
Luc

3
@Luc Như Leo và ytpillai đã đề cập, chúng tôi đang sử dụng phép chia số nguyên (trong đó phần phân số của kết quả sau khi chia sẽ bị loại bỏ). Trong Python 3: 16 // 6 >>> 216 / 6 >>> 2.6666666666666665
bryik

30

Có thể ví dụ về đồng hồ có thể giúp bạn hiểu mô đun.

Một cách sử dụng quen thuộc của số học mô-đun là sử dụng nó trong đồng hồ 12 giờ, trong đó ngày được chia thành hai khoảng thời gian 12 giờ.

Giả sử chúng tôi hiện đang có thời gian này: 15:00
Nhưng bạn cũng có thể nói là 3 giờ chiều

Đây chính xác là những gì modulo làm:

15 / 12 = 1, remainder 3

Bạn thấy ví dụ này được giải thích rõ hơn trên wikipedia: Wikipedia Modulo Article


29

Công thức đơn giản để tính môđun là: -

[Dividend-{(Dividend/Divisor)*Divisor}]

Vì vậy, 27% 16: -

27- {(27/16) * 16}

27- {1 * 16}

Trả lời = 11

Ghi chú :

Tất cả các phép tính là với số nguyên. Trong trường hợp thương số thập phân, phần sau số thập phân sẽ bị bỏ qua / cắt bớt.

ví dụ: 27/16 = 1,6875 chỉ được coi là 1 trong công thức đã đề cập ở trên. 0,6875 được bỏ qua.

Các trình biên dịch ngôn ngữ máy tính cũng xử lý một số nguyên với phần thập phân theo cùng một cách (bằng cách cắt bớt sau phần thập phân)


Còn 3% 7 thì sao?
Eaglei22

Vì vậy, nó sẽ chỉ là 3?
Eaglei22

15

Toán tử mô-đun nhận một câu lệnh chia và trả về bất cứ thứ gì còn lại từ phép tính đó, dữ liệu "còn lại", chẳng hạn như 13/5 = 2. Có nghĩa là, còn lại 3 hoặc còn lại từ phép tính đó. Tại sao? vì 2 * 5 = 10. Như vậy, 13 - 10 = 3.

Toán tử mô-đun thực hiện tất cả phép tính đó cho bạn, 13% 5 = 3.


Tôi nghĩ câu trả lời này giải thích nó tốt nhất từ ​​quan điểm khái niệm. Các câu trả lời khác giải thích về mặt toán học cũng cần thiết, nhưng điều này tốt hơn giúp tôi hiểu cách tôi có thể áp dụng toán tử modulo.
JonnyB

7

phép chia môđun chỉ đơn giản là: chia hai số và chỉ trả lại phần còn lại

27/16 = 1 còn dư 11, do đó 27% 16 = 11

ditto 43/16 = 2 còn dư 11 ​​nên 43% 16 = 11 nữa



5

Tôi muốn thêm một điều nữa:

thật dễ dàng để tính toán modulo khi cổ tức lớn hơn / lớn hơn số chia

số bị chia = 5 số chia = 3

5% 3 = 2

3)5(1
  3
-----
  2

nhưng điều gì sẽ xảy ra nếu số chia nhỏ hơn số cổ tức

số bị chia = 3 số chia = 5

3% 5 = 3 ?? làm sao

Điều này là do, vì 5 không thể chia 3 trực tiếp, nên modulo sẽ là cổ tức


3

Tôi hy vọng các bước đơn giản này sẽ giúp:

20 % 3 = 2 
  1. 20 / 3 = 6; không bao gồm .6667- chỉ cần bỏ qua nó
  2. 3 * 6 = 18
  3. 20 - 18 = 2, là phần còn lại của modulo

Bạn có thể vui lòng định dạng câu trả lời này tốt hơn một chút không?
Mã Maverick

Kiểm tra câu trả lời của Code Jammer.
Ajmal Salim

2

Dễ dàng hơn khi số của bạn sau số thập phân (0.xxx) ngắn. Sau đó, tất cả những gì bạn cần làm là nhân số đó với số sau khi chia.

Ví dụ: 32 % 12 = 8

Bạn làm 32/12=2.666666667 Sau đó, bạn vứt 2bỏ và tập trung vào0.666666667 0.666666667*12=8 <- Đó là câu trả lời của bạn.

(một lần nữa, chỉ dễ dàng khi số sau số thập phân ngắn)


1

Phép chia môđun cho bạn phần còn lại của một phép chia, chứ không phải thương số.


1

Giả sử bạn có 17 mod 6.

tổng số 6 sẽ giúp bạn gần nhất với 17, nó sẽ là 12 bởi vì nếu bạn vượt quá 12, bạn sẽ có 18 mà nhiều hơn câu hỏi của 17 mod 6. Sau đó, bạn sẽ lấy 12 và trừ đi 17 sẽ cho bạn câu trả lời của bạn, trong trường hợp này là 5.

17 mod 6 = 5


1

Việc phân chia mô-đun khá đơn giản. Nó sử dụng phần dư thay vì thương số.

    1.0833... <-- Quotient
   __
12|13
   12
    1 <-- Remainder
    1.00 <-- Remainder can be used to find decimal values
     .96
     .040
     .036
     .0040 <-- remainder of 4 starts repeating here, so the quotient is 1.083333...

13/12 = 1R1, sai 13% 12 = 1.


Thật hữu ích khi nghĩ về mô đun như một "chu kỳ".

Nói cách khác, đối với biểu thức n % 12, kết quả sẽ luôn là <12.

Điều đó có nghĩa trình tự cho các thiết lập 0..100cho n % 12là:

{0,1,2,3,4,5,6,7,8,9,10,11,0,1,2,3,4,5,6,7,8,9,10,11,0,[...],4}

Trong ánh sáng đó, mô-đun, cũng như công dụng của nó, trở nên rõ ràng hơn nhiều.


1

Điều quan trọng duy nhất cần hiểu là môđun (được biểu thị ở đây là% như trong C) được xác định thông qua phép chia Euclide .

Đối với bất kỳ hai (d, q)số nguyên nào sau đây luôn đúng :

d = ( d / q ) * q + ( d % q )

Như bạn có thể thấy giá trị của d%q phụ thuộc vào giá trị của d/q . Nói chung đối với số nguyên dương d/qđược cắt ngắn về 0 , ví dụ: 5/2 cho 2, do đó:

5 = (5/2)*2 + (5%2) => 5 = 2*2 + (5%2) => 5%2 = 1

Tuy nhiên, đối với số nguyên âm, tình hình không rõ ràng hơn và phụ thuộc vào ngôn ngữ và / hoặc tiêu chuẩn. Ví dụ -5/2 có thể trả về -2 (bị cắt bớt về 0 như trước) nhưng cũng có thể trả về -3 (với ngôn ngữ khác).

Trong trường hợp đầu tiên:

-5 = (-5/2)*2 + (-5%2) => -5 = -2*2 + (-5%2) => -5%2 = -1

nhưng trong cái thứ hai:

-5 = (-5/2)*2 + (-5%2) => -5 = -3*2 + (-5%2) => -5%2 = +1

Như đã nói trước đó, chỉ cần nhớ bất biến , đó là phép chia Euclide .

Biết thêm chi tiết:


1
Hữu ích đáng ngạc nhiên liên quan đến phân trang.
Bob Jordan

1

27% 16 = 11

Bạn có thể giải thích nó theo cách này:

16 đi 1 lần thành 27 trước khi vượt qua nó.

16 * 2 = 32.

Vì vậy, bạn có thể nói rằng 16 đi một lần trong 27 với phần còn lại là 11.

Trong thực tế,

16 + 11 = 27

Một ví dụ khác:

20% 3 = 2

Giếng 3 đi 6 lần thành 20 trước khi vượt qua nó.

3 * 6 = 18

Để cộng tới 20, chúng ta cần 2 để phần còn lại của biểu thức mô đun là 2.


0

Thật đơn giản, toán tử Modulus (%) trả về phần còn lại sau khi chia số nguyên. Hãy lấy ví dụ về câu hỏi của bạn. Làm thế nào 27% 16 = 11? Khi bạn chỉ cần chia 27 cho 16 tức là (27/16) thì bạn nhận được phần dư là 11, và đó là lý do tại sao câu trả lời của bạn là 11.


0

Viết ra một bảng bắt đầu bằng 0.

{0,1,2,3,4}

Tiếp tục bảng theo hàng.

{0,1,2,3,4}
{5,6,7,8,9}
{10,11,12,13,14}

Mọi thứ trong cột một là bội số của 5. Mọi thứ trong cột 2 là bội số của 5 với 1 là phần dư. Bây giờ là phần trừu tượng: Bạn có thể viết (1) đó là 1/5 hoặc dưới dạng khai triển thập phân. Toán tử mô-đun chỉ trả về cột, hoặc theo cách nghĩ khác, nó trả về phần còn lại trên phép chia dài. Bạn đang giao dịch trong modulo (5). Mô đun khác nhau, bảng khác nhau. Hãy nghĩ về một bảng băm.


0

Khi chúng ta chia hai số nguyên, chúng ta sẽ có một phương trình giống như sau:

A / B = Q phần còn lại R

A là cổ tức; B là số chia; Q là thương và R là phần dư

Đôi khi, chúng ta chỉ quan tâm đến phần dư là bao nhiêu khi chúng ta chia A cho B. Đối với những trường hợp này, có một toán tử được gọi là toán tử modulo (viết tắt là mod).

Ví dụ

16/5= 3 Remainder 1  i.e  16 Mod 5 is 1.
0/5= 0 Remainder 0 i.e 0 Mod 5 is 0.
-14/5= 3 Remainder 1 i.e. -14 Mod 5 is 1.

Xem Bài viết của Học viện Khan để biết thêm thông tin.

Trong Khoa học máy tính, bảng băm sử dụng toán tử Mod để lưu trữ phần tử trong đó A sẽ là các giá trị sau khi băm, B sẽ là kích thước bảng và R là số vị trí hoặc khóa nơi phần tử được chèn vào.

Xem Cách hoạt động của bảng băm để biết thêm thông tin


-1

Đây là cách tiếp cận tốt nhất đối với tôi để hiểu toán tử mô-đun. Tôi sẽ chỉ giải thích cho bạn thông qua các ví dụ.

16 % 3

Khi bạn chia hai số này, phần dư là kết quả. Đây là cách tôi làm điều đó.

16 % 3 = 3 + 3 = 6; 6 + 3 = 9; 9 + 3 = 12; 12 + 3 = 15

Vì vậy, những gì còn lại đến 16 là 1

16 % 3 = 1

Đây là một ví dụ nữa: 16 % 7 = 7 + 7 = 14còn lại 16 là bao nhiêu? Là2 16 % 7 = 2

Thêm một: 24 % 6 = 6 + 6 = 12; 12 + 6 = 18; 18 + 6 = 24 . Vì vậy, phần còn lại là 0,24 % 6 = 0

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.