Modül Bölme Nasıl Çalışır?


105

Modül bölünmesinin nasıl çalıştığını gerçekten anlamıyorum. Hesap yapıyordum 27 % 16ve yaralanmıştım 11ve nedenini anlamıyorum.

İnternette meslekten olmayanların terimleriyle bir açıklama bulamıyorum. Biri burada neler olup bittiğini çok yüksek bir düzeyde detaylandırabilir mi?

Yanıtlar:


107

Bir sonucu modül bölümü bir geri kalanı olan tam bölümünün sayının.

Bunun anlamı:

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

Diğer örnekler:

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

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

66
lütfen bunu yanlış anlamayın, ancak örnekleriniz alçakgönüllü divison ile neler olup bittiğine dair kesinlikle hiçbir fikri olmayan biri için hiçbir şeyi netleştirmiyor. Kalanların nereden geldiğini açıklayan çok önemli adımları atladınız. Marcin M.'nin aşağıdaki cevabı süreci daha iyi açıkladı. Lütfen, bir kavramı hiç kavrayamayanlarımız için gelecekteki cevaplarda daha ayrıntılı olmayı düşünün. Yine de topluluğa katkıda bulunan bir üye olduğunuz için teşekkür ederiz! Senin gibi insanlar bana yardım ve :) benim eğitim yolculuğunda bana yardım etmeye devam
Soundfx4

Wikipedia'ya rağmen, modül ve kalan aynı şey değildir. Bazı dillerde bir, bazılarında diğerinde, bazılarının her ikisinde ve bazılarının tanımsız olması.
Lorne Markisi

156

Açıklamaların çoğu önemli bir adımı gözden kaçırıyor, boşluğu başka bir örnekle dolduralım.

Aşağıdakiler göz önüne alındığında:

Dividend: 16
Divisor: 6

Modül fonksiyonu aşağıdaki gibidir:

16 % 6 = 4

Bunun neden olduğunu belirleyelim.

İlk olarak, gerçekleştirmek bölme tamsayıdır atılır (geri kalanı da bilinir) bir kısmi grup dışında, normal bir bölümü benzer,:

16 / 6 = 2

Ardından, çarpma yukarıdaki bölümü (sonucunu 2bizim ile) bölen ( 6):

2 * 6 = 12

Son olarak, çıkarma yukarıdaki çarpma (sonucunu 12bizim itibaren) temettü ( 16):

16 - 12 = 4

Bu çıkarmanın sonucu 4, geri kalan , yukarıdaki modülümüzün aynı sonucudur !


1
2,6666666667 değil, 16/6 üzerinden 2'yi nasıl elde edersiniz? Her zaman 0, ... 'yı görmezden mi gelmelisiniz? Neden?
Luc

3
@Luc Leo ve ytpillai'nin de bahsettiği gibi, tamsayı bölme kullanıyoruz (burada, sonucun bölünmeden sonraki kesirli kısmı atılır). Python 3'te: 16 // 6 >>> 2ve16 / 6 >>> 2.6666666666666665
bryik

30

Belki saatli örnek, moduloyu anlamanıza yardımcı olabilir.

Modüler aritmetiğin bilinen bir kullanımı, günün 12 saatlik iki periyoda bölündüğü 12 saatlik düzende kullanılmasıdır.

Diyelim ki şu anda bu saatimiz var: 15:00
Ama aynı zamanda öğleden sonra 3 de diyebilirsiniz.

Modulo'nun yaptığı tam olarak budur:

15 / 12 = 1, remainder 3

Bu örneği wikipedia'da daha iyi açıklanmış olarak bulabilirsiniz: Wikipedia Modulo Article


29

Modülü hesaplamak için basit formül: -

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

Yani,% 27 16: -

27- {(27/16) * 16}

27- {1 * 16}

Cevap = 11

Not :

Tüm hesaplamalar tam sayılarla yapılır. Ondalık bölüm olması durumunda, ondalık sayıdan sonraki kısım yok sayılır / kesilir.

Örneğin: 27/16 = 1.6875, yukarıda belirtilen formülde sadece 1 olarak alınmalıdır. 0.6875 dikkate alınmaz.

Bilgisayar dillerinin derleyicileri, ondalık kısmı olan bir tamsayıyı da aynı şekilde (ondalıktan sonra keserek) ele alır.


Peki ya% 3 7?
eaglei22

Yani 3 olur mu?
eaglei22

15

Modül operatörü bir bölme ifadesini alır ve bu hesaplamadan arta kalan her şeyi, yani 13/5 = 2 gibi "kalan" verileri döndürür. Bunun anlamı, bu hesaplamadan kalan veya kalan 3 olduğu anlamına gelir. Neden? çünkü 2 * 5 = 10. Böylece, 13-10 = 3.

Modül operatörü tüm bu hesaplamayı sizin için yapar,% 13 5 = 3.


Bu cevabın kavramsal açıdan en iyi şekilde açıkladığını düşünüyorum. Diğer cevaplar da matematiksel olarak gerekli olduğunu açıklar, ancak bu, modulo operatörünü nasıl uygulayabileceğimi daha iyi anlamama yardımcı olur.
JonnyB

7

modül bölünmesi basitçe şudur: iki sayıyı böl ve yalnızca kalanı döndür

27/16 = 1, 11 kalmıştır, dolayısıyla% 27 16 = 11

Ditto 43/16 = 2, 11 kaldı, yani% 43 16 = 11 de



5

Bir şey daha eklemek istiyorum:

Temettü bölenden daha büyük / daha büyük olduğunda moduloyu hesaplamak kolaydır

bölünen = 5 bölen = 3

% 5 3 = 2

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

ama ya bölen temettüden daha küçükse

temettü = 3 bölen = 5

% 3 5 = 3 ?? Nasıl

Bunun nedeni, 5'in 3'ü doğrudan bölemeyeceği için, temettü olan modulo olacaktır.


3

Umarım bu basit adımlar yardımcı olur:

20 % 3 = 2 
  1. 20 / 3 = 6; dahil etmeyin .6667- sadece görmezden gelin
  2. 3 * 6 = 18
  3. 20 - 18 = 2modulo'nun geri kalanı

Lütfen bu yanıtı biraz daha iyi biçimlendirir misiniz?
Code Maverick

Code Jammer'ın cevabını kontrol edin.
Ajmal Salim

2

Ondalık sayıdan (0.xxx) sonraki sayınız kısa olduğunda daha kolaydır. O zaman tek yapmanız gereken, bu sayıyı bölmeden sonraki sayı ile çarpmaktır.

Ör: 32 % 12 = 8

Yaparsın 32/12=2.666666667 Sonra atarsın 2ve 0.666666667 0.666666667*12=8<- Bu senin cevabın.

(yine, yalnızca ondalıktan sonraki sayı kısa olduğunda kolaydır)


1

Modül bölünmesi, bölüm yerine bölümün kalanını verir.


1

Diyelim ki 17 mod 6'nız var.

6 toplamı sizi 17'ye en yakın getirecek, 12 olacak çünkü 12'yi geçerseniz, 17 mod 6 sorusundan daha fazla 18 olacak. Daha sonra 12 ve eksi 17'yi alacak ve size verecek cevabınız, bu durumda 5.

17 mod 6 = 5


1

Modül bölünmesi oldukça basittir. Bölüm yerine kalanı kullanır.

    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.


Modülü bir "döngü" olarak düşünmeye yardımcı olur.

Diğer bir deyişle, ifade n % 12için sonuç her zaman <12 olacaktır.

Bu dizi için dizisi anlamına gelir 0..100için n % 12bir:

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

Bu ışıkta, modül ve kullanımları çok daha net hale gelir.


1

Anlaşılması gereken tek önemli şey, modülün (burada C'deki gibi% ile gösterilmektedir) Öklid bölünmesiyle tanımlanmasıdır .

Herhangi iki (d, q)tam sayı için aşağıdakiler her zaman doğrudur :

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

Gördüğünüz gibi değeri, değerine d%q bağlıdır d/q . Genellikle pozitif tamsayılar d/qiçin sıfıra doğru kesilir , örneğin 5/2, 2'yi verir, dolayısıyla:

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

Bununla birlikte, negatif tamsayılar için durum daha az açıktır ve dile ve / veya standarda bağlıdır. Örneğin -5/2, -2 (daha önce olduğu gibi sıfıra doğru kesilir) döndürebilir, ancak -3 (başka bir dilde) döndürebilir.

İlk durumda:

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

ama ikincisinde:

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

Daha önce de söylendiği gibi , Öklid bölümü olan değişmezi hatırlayın .

Daha fazla detay:


1
Sayfalandırma açısından şaşırtıcı derecede yararlı.
Bob Jordan

1

% 27 16 = 11

Bunu şu şekilde yorumlayabilirsiniz:

16, geçmeden önce 27'ye 1 kez gidiyor.

16 * 2 = 32.

Yani 16'nın 27'de bir, kalan 11'inin gittiğini söyleyebilirsiniz.

Aslında,

16 + 11 = 27

Başka bir örnek:

% 20 3 = 2

Kuyu 3, geçmeden önce 6 kez 20'ye gider.

3 * 6 = 18

20'ye kadar toplamak için 2'ye ihtiyacımız var, böylece modül ifadesinin geri kalanı 2'dir.


0

Basittir, Modül operatörü (%) tamsayı bölmesinden sonra kalanı döndürür. Sorunuzun örneğini ele alalım. % 27 16 = 11 nasıl? 27'yi 16'ya böldüğünüzde yani (27/16) 11 olarak kalacaksınız ve bu yüzden cevabınız 11'dir.


0

0 ile başlayan bir tablo yazın.

{0,1,2,3,4}

Tabloya satırlar halinde devam edin.

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

Birinci sütundaki her şey 5'in katıdır. Sütun 2'deki her şey 5'in katıdır ve kalan 1'dir. Şimdi soyut kısım: Bunu (1) 1/5 veya ondalık genişletme olarak yazabilirsiniz. Modül operatörü yalnızca sütunu döndürür veya başka bir şekilde, uzun bölmede kalanı döndürür. Modulo (5) ile uğraşıyorsunuz. Farklı modül, farklı tablo. Bir Karma Tablosu düşünün.


0

İki tamsayıyı böldüğümüzde, aşağıdaki gibi görünen bir denklemimiz olacak:

A / B = Q kalan R

A temettüdür; B, bölen; Q bölüm ve R geri kalan

Bazen, sadece A'yı B'ye böldüğümüzde kalanın ne olduğu ile ilgileniriz. Bu durumlar için modulo operatörü (mod olarak kısaltılır) adında bir operatör vardır.

Örnekler

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.

Daha fazla bilgi için Khan Academy Makalesine bakın .

Bilgisayar biliminde, Hash tablosu, A'nın karma işleminden sonra değerler olacağı, B'nin tablo boyutu olacağı ve R, öğenin eklendiği yuvaların veya anahtarın sayısı olduğu öğeyi depolamak için Mod işlecini kullanır.

Daha fazla bilgi için Karma tablo nasıl çalışır? Konusuna bakın


-1

Bu, modül operatörünü anlamak için benim için en iyi yaklaşımdı. Size sadece örneklerle açıklayacağım.

16 % 3

Bu iki sayıyı böldüğünüzde kalan sonuçtur. Ben böyle yaparım.

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

Öyleyse 16'ya kalan 1'dir

16 % 3 = 1

İşte bir örnek daha: 16 % 7 = 7 + 7 = 1416'ya ne kaldı? Dır-dir2 16 % 7 = 2

Bir tane daha: 24 % 6 = 6 + 6 = 12; 12 + 6 = 18; 18 + 6 = 24 . Yani kalan sıfırdır,24 % 6 = 0

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.