Bagaimana Cara Kerja Modulus Divison


105

Saya tidak begitu mengerti cara kerja pembagian modulus. Saya sedang menghitung 27 % 16dan mengakhiri 11dan saya tidak mengerti mengapa.

Saya tidak dapat menemukan penjelasan dalam istilah awam secara online. Dapatkah seseorang menjelaskan pada tingkat yang sangat tinggi tentang apa yang terjadi di sini?

Jawaban:


107

Hasil dari pembagian modulo adalah sisa dari pembagian bilangan bulat dari bilangan yang diberikan.

Itu berarti:

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

Contoh lain:

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

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

66
tolong jangan mengambil ini dengan cara yang salah, tetapi contoh Anda tidak menjelaskan apa pun untuk seseorang yang sama sekali tidak tahu apa yang terjadi dengan modulous divison. Anda meninggalkan langkah-langkah yang sangat penting yang menjelaskan dari mana sisa itu berasal. Jawaban Marcin M. di bawah menjelaskan prosesnya dengan lebih baik. Harap pertimbangkan untuk lebih detail dalam jawaban mendatang bagi kita yang mungkin tidak memahami konsep sama sekali. Terima kasih telah menjadi anggota yang berkontribusi pada komunitas! Orang-orang seperti Anda membantu saya, dan terus membantu saya dalam perjalanan pendidikan saya :)
Soundfx4

Meskipun Wikipedia, modulus dan sisanya bukanlah hal yang sama. Beberapa bahasa memiliki satu, beberapa lainnya, beberapa keduanya, dan beberapa tidak ditentukan.
Marquis dari Lorne

156

Sebagian besar penjelasan melewatkan satu langkah penting, mari kita isi celahnya menggunakan contoh lain.

Diberikan sebagai berikut:

Dividend: 16
Divisor: 6

Fungsi modulus terlihat seperti ini:

16 % 6 = 4

Mari kita tentukan mengapa demikian.

Pertama, lakukan pembagian bilangan bulat , yang mirip dengan pembagian normal, kecuali bilangan pecahan (alias sisa) yang dibuang:

16 / 6 = 2

Kemudian, kalikan hasil pembagian di atas ( 2) dengan pembagi kita ( 6):

2 * 6 = 12

Terakhir, kurangi hasil perkalian di atas ( 12) dari dividen ( 16) kita:

16 - 12 = 4

Hasil pengurangan ini, 4, yang sisanya , adalah hasil yang sama dari kami modulus atas!


1
Bagaimana Anda mendapatkan 2 dari 16/6 dan bukan 2.6666666667? Haruskah Anda selalu mengabaikan 0, ...? Mengapa?
Luc

3
@Luc Seperti yang Leo dan ytpillai sebutkan, kami menggunakan pembagian integer (di mana bagian pecahan dari hasil setelah pembagian dibuang). Dengan Python 3: 16 // 6 >>> 2dan16 / 6 >>> 2.6666666666666665
bryik

30

Mungkin contoh dengan jam bisa membantu Anda memahami modulo.

Penggunaan yang umum dari aritmatika modular adalah penggunaannya dalam format 12 jam, di mana hari dibagi menjadi dua periode 12 jam.

Katakanlah saat ini kita punya waktu: 15:00
Tapi bisa juga dikatakan sudah jam 3 sore

Inilah yang dilakukan modulo:

15 / 12 = 1, remainder 3

Anda menemukan contoh ini dengan lebih baik dijelaskan di wikipedia: Wikipedia Modulo Article


29

Rumus sederhana untuk menghitung modulus adalah: -

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

Jadi, 27% 16: -

27- {(27/16) * 16}

27- {1 * 16}

Jawaban = 11

Catatan :

Semua perhitungan menggunakan bilangan bulat. Dalam kasus hasil bagi desimal, bagian setelah desimal akan diabaikan / dipotong.

misal: 27/16 = 1,6875 dianggap hanya 1 dalam rumus yang disebutkan di atas. 0,6875 diabaikan.

Penyusun bahasa komputer memperlakukan bilangan bulat dengan bagian desimal dengan cara yang sama (dengan memotong setelah desimal) juga


Bagaimana dengan 3% 7?
eaglei22

Jadi hanya akan menjadi 3?
eaglei22

15

Operator modulus mengambil pernyataan pembagian dan mengembalikan apa pun yang tersisa dari perhitungan itu, data "yang tersisa", sehingga untuk berbicara, seperti 13/5 = 2. Yang berarti, ada 3 yang tersisa, atau tersisa dari perhitungan itu. Mengapa? karena 2 * 5 = 10. Jadi, 13 - 10 = 3.

Operator modulus melakukan semua perhitungan itu untuk Anda, 13% 5 = 3.


Saya pikir jawaban ini menjelaskannya dengan sangat baik dari sudut pandang konseptual. Jawaban lain menjelaskan secara matematis yang juga diperlukan, tetapi ini lebih baik membantu saya memahami bagaimana saya dapat menerapkan operator modulo.
JonnyB

7

pembagian modulus sederhananya: membagi dua angka dan mengembalikan sisanya saja

27/16 = 1 dengan sisa 11, oleh karena itu 27% 16 = 11

ditto 43/16 = 2 dengan sisa 11 jadi 43% 16 = 11 juga



5

Saya ingin menambahkan satu hal lagi:

mudah untuk menghitung modulo ketika dividen lebih besar / lebih besar dari pembagi

pembilang = 5 pembagi = 3

5% 3 = 2

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

tetapi bagaimana jika pembagi lebih kecil dari dividen

pembagi = 3 pembagi = 5

3% 5 = 3 ?? bagaimana

Ini karena, karena 5 tidak dapat membagi 3 secara langsung, modulo akan menjadi dividen


3

Saya harap langkah-langkah sederhana ini akan membantu:

20 % 3 = 2 
  1. 20 / 3 = 6; tidak menyertakan .6667- abaikan saja
  2. 3 * 6 = 18
  3. 20 - 18 = 2, yang merupakan sisa dari modulo

Bisakah Anda memformat jawaban ini sedikit lebih baik?
Kode Maverick

Periksa jawaban Code Jammer.
Ajmal Salim

2

Lebih mudah bila angka Anda setelah desimal (0.xxx) pendek. Maka yang perlu Anda lakukan hanyalah mengalikan angka itu dengan angka setelah pembagian.

Ex: 32 % 12 = 8

Anda lakukan 32/12=2.666666667 Kemudian Anda membuangnya 2, dan fokus pada0.666666667 0.666666667*12=8 <- Itu jawaban Anda.

(sekali lagi, hanya mudah jika angka setelah desimalnya pendek)


1

Pembagian modulus menghasilkan sisa pembagian, bukan hasil bagi.


1

Katakanlah Anda memiliki 17 mod 6.

berapa total 6 akan membuat Anda paling dekat dengan 17, itu akan menjadi 12 karena jika Anda pergi lebih dari 12 Anda akan memiliki 18 yang lebih dari pertanyaan 17 mod 6. Anda kemudian akan mengambil 12 dan minus dari 17 yang akan memberi Anda jawaban Anda, dalam hal ini 5.

17 mod 6 = 5


1

Pembagian modulus cukup sederhana. Ini menggunakan sisa, bukan hasil bagi.

    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, ergo 13% 12 = 1.


Ini membantu untuk memikirkan modulus sebagai "siklus".

Dengan kata lain, untuk ekspresi tersebut n % 12, hasilnya akan selalu <12.

Artinya urutan himpunan 0..100untuk n % 12adalah:

{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}

Dalam hal ini, modulus serta kegunaannya menjadi lebih jelas.


1

Satu-satunya hal penting untuk dipahami adalah bahwa modulus (dilambangkan di sini dengan% seperti di C) didefinisikan melalui pembagian Euclidean .

Untuk dua (d, q)bilangan bulat apa pun , berikut ini selalu benar :

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

Seperti yang Anda lihat, nilai d%q tergantung pada nilai d/q . Umumnya untuk bilangan bulat positif d/qyang dipotong menuju nol , misalnya 5/2 memberikan 2, maka:

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

Namun untuk bilangan bulat negatif situasinya kurang jelas dan tergantung pada bahasa dan / atau standar. Misalnya -5/2 bisa mengembalikan -2 (dipotong ke nol seperti sebelumnya) tetapi juga bisa mengembalikan -3 (dengan bahasa lain).

Dalam kasus pertama:

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

tapi yang kedua:

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

Seperti yang dikatakan sebelumnya, ingatlah invariannya , yaitu divisi Euclidean .

Keterangan lebih lanjut:


1
Sangat berguna dalam hal pagination.
Bob Jordan

1

27% 16 = 11

Anda dapat menafsirkannya seperti ini:

16 dibagi 1 kali menjadi 27 sebelum mengopernya.

16 * 2 = 32.

Jadi bisa dibilang 16 masuk satu kali dalam 27 dengan sisa 11.

Faktanya,

16 + 11 = 27

Contoh lainnya:

20% 3 = 2

Nah 3 dibagi 6 kali menjadi 20 sebelum meneruskannya.

3 * 6 = 18

Untuk menjumlahkan hingga 20 kita membutuhkan 2 sehingga sisa ekspresi modulusnya adalah 2.


0

Sederhana, operator Modulus (%) mengembalikan sisa setelah pembagian integer. Mari kita ambil contoh pertanyaan Anda. Bagaimana 27% 16 = 11? Ketika Anda membagi 27 dengan 16 yaitu (27/16) maka Anda mendapatkan sisanya sebagai 11, dan itulah mengapa jawaban Anda adalah 11.


0

Tulis tabel yang dimulai dengan 0.

{0,1,2,3,4}

Lanjutkan tabel dalam baris.

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

Semua yang ada di kolom satu adalah kelipatan 5. Semua yang ada di kolom 2 adalah kelipatan 5 dengan 1 sebagai sisa. Sekarang bagian abstrak: Anda dapat menulis bahwa (1) sebagai 1/5 atau sebagai ekspansi desimal. Operator modulus hanya mengembalikan kolom, atau dengan cara berpikir lain, ia mengembalikan sisanya pada pembagian panjang. Anda berurusan dengan modulo (5). Modulus berbeda, tabel berbeda. Pikirkan Tabel Hash.


0

Saat kita membagi dua bilangan bulat, kita akan memiliki persamaan yang terlihat seperti berikut:

A / B = Q sisa R

A adalah dividen; B adalah pembagi; Q adalah hasil bagi dan R adalah sisanya

Terkadang kita hanya tertarik pada apa yang tersisa ketika kita membagi A dengan B. Untuk kasus ini ada operator yang disebut operator modulo (disingkat mod).

Contoh

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.

Lihat Artikel Khan Academy untuk informasi lebih lanjut.

Dalam ilmu Komputer, tabel Hash menggunakan operator Mod untuk menyimpan elemen di mana A akan menjadi nilai setelah hashing, B adalah ukuran tabel dan R adalah jumlah slot atau kunci tempat elemen dimasukkan.

Lihat Bagaimana tabel hash bekerja untuk informasi lebih lanjut


-1

Ini adalah pendekatan terbaik bagi saya untuk memahami operator modulus. Saya hanya akan menjelaskan kepada Anda melalui contoh.

16 % 3

Saat Anda membagi dua angka ini, hasilnya adalah sisa. Ini adalah cara saya melakukannya.

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

Jadi yang tersisa 16 adalah 1

16 % 3 = 1

Ini satu contoh lagi: 16 % 7 = 7 + 7 = 14apa yang tersisa menjadi 16? Adalah2 16 % 7 = 2

Satu lagi: 24 % 6 = 6 + 6 = 12; 12 + 6 = 18; 18 + 6 = 24 . Jadi sisanya nol,24 % 6 = 0

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.