Neden 2 mod 4 = 2?


150

Böyle basit bir soru sormaktan utanıyorum. Görevim iki hafta daha başlamıyor, bu yüzden bir profesöre soramıyorum ve gerilim beni öldürecekti.

Neden 2 mod 4 = 2?


45
Çünkü 2 = 0 * 4 + 2.
p4bl0


1
X / y'de bir tamsayı bölümü ve bir fraksiyon bölümü oluşur. Kesir kısmını bölenle çarparsanız, geri kalanını alırsınız. Ve x = Tamsayı kısım y + Kalan (yani Kesir kısmı y). Bu durumda Tamsayı kısmı 0 ve kalan 2'dir.
mshsayem

76
bu soruyu sorma cesaretine sahip olduğun için mutluyum.
serme

modülo eşit olacak şekilde çok uzaktır bölünmesi iki sayı.
holex

Yanıtlar:


151

Mod sadece bölümü gerçekleştirdikten sonra geri kalanını alacağınız anlamına gelir. 4, 2 sıfır kez girdiği için, 2'lik bir kalanla sonuçlanırsınız.


95

Modulo kalan kısımdır , bölünme değildir.

2 / 4 = 0R2
2 % 4 = 2

İşaret %genellikle modülo operatörü için, kelimenin yerine kullanılırmod .

İçin x % 4, aşağıdaki tabloyu alırsınız (1-10 için)

 x x%4
------
 1  1
 2  2
 3  3
 4  0
 5  1
 6  2
 7  3
 8  0
 9  1
10  2

18

Modulo (mod,%) Kalan operatörüdür.

2%2 = 0 (2/2 = 1 remainder 0)
1%2 = 1 (1/2 = 0 remainder 1)
4%2 = 0 (4/2 = 2 remainder 0)
5%2 = 1 (5/2 = 2 remainder 1)

3
Ve "ayrıntılı" açıklama: 2 = 4 · 0 + 2 ;-)
Michael Krelin - hacker

13

U muz ve bir grup insan kullanırsanız çok daha kolay.

Diyelim ki 1 muzunuz ve 6 kişilik bir grubunuz var, bunu ifade edersiniz: 1 mod 6/ 1 % 6/ 1 modulo 6.

Gruptaki her insanın iyi beslenmesi ve mutlu olması için 6 muz gerekir.

Bu nedenle, 1 muzunuz varsa ve 6 kişiyle paylaşmanız gerekiyorsa, ancak her grup üyesi için 1 muzunuz varsa, yani 6 kişiniz varsa paylaşabilirsiniz, o zaman 1 muzunuz olacaktır (kalan, kimseyle paylaşılmaz) aynı) 2 muz için de geçerlidir. Sonra kalan 2 muz olacak (hiçbir şey paylaşılmaz).

Ancak 6 muz aldığınızda, mutlu olmalısınız, çünkü o zaman 6 kişilik gruptaki her üye için 1 muz vardır ve 6 kişiyi de 6 muzda paylaştığınızda kalan 0 veya hiç muz kalmamıştır.

Şimdi, 7 muz ve gruptaki 6 kişi için, o zaman sahip olacaksınız 7 mod 6 = 1, çünkü her birine 6 kişiye 1 muz verdiniz ve kalan 1 muz.

İçin 12 mod 66 kişi paylaşılan muz ya da 12, her biri bir ya da iki muz olacaktır, ve geri kalan daha sonra 0 olduğu.



8

Bu konuda da kafam karıştı, sadece birkaç dakika önce. Sonra bölünmeyi uzun bir kağıt parçası üzerinde yaptım ve mantıklı geldi:

  • 4, 2 sıfır kez girer.
  • 4 çarpı 0, 0 dır.
  • Bu sıfırı 2'nin altına koyarsınız ve 2'den çıkarırsınız.

Bilgisayarın bu sorunu çözeceği kadarıyla. Bilgisayar orada durur ve 2 değerini döndürür, bu da mantıklıdır çünkü "%" (mod) bunu ister.

Ondalık sayı koymak ve devam etmek için eğitildik, bu yüzden ilk başta mantıksız olabilir.


7

Birisi benimle iletişime geçti ve sorunun yorumunda cevabımı daha ayrıntılı olarak açıklamamı istedi. İşte bu kişiye, başkalarına yardımcı olması durumunda yanıtladığım şey:

Modulo işlemi size öklid disivyonunun geri kalanını verir (ki bu sadece gerçek sayılarla değil, tamsayı ile çalışır). A = B * C + D (D <B ile) olacak şekilde A'ya sahipseniz, A'nın B'ye ait öklid bölümünün bölümü C'dir ve geri kalanı D'dir. 2'yi 4'e bölerseniz bölüm 0 ve geri kalan 2'dir.

Diyelim ki A nesneleriniz var (kesemeyeceğiniz). Ve bu nesnelerin aynı miktarını B insanlarına dağıtmak istiyorsunuz. B'den fazla nesneniz olduğu sürece, her birine 1 verip tekrarlayın. B'den az nesneniz kaldığında, kalan nesneleri durdurup saklarsınız. İşlemi tekrarladığınız süre, diyelim ki bu C sayısını diyelim. Sonunda tuttuğunuz nesne sayısı, buna D diyelim, geri kalanı.

2 nesne ve 4 kişi varsa. Zaten 4'ten az nesneniz var. Böylece her insan 0 nesne alır ve siz 2 tutarsınız.

Bu yüzden 2 modulo 4 2'dir.


5

Modulo operatörü, iki tamsayı işleneninin bölümünün geri kalanını değerlendirir. İşte birkaç örnek:

23 % 10 evaluates to 3 (because 23/10 is 2 with a remainder of 3)
50 % 50 evaluates to 0 (50/50 is 1 with a remainder of 0)
9 % 100 evaluates to 9 (9/100 is 0 with a remainder of 9)

4

mod, bölündüğü zaman rayba anlamına gelir. Yani, 2'ye 4 bölü 0, 2'si kalmıştır. Bu nedenle 2 mod 4 2'dir.


4

Modulo, matematiksel bölünme ifadesinin bir tamsayı olarak ifade edilen geri kalan kısmıdır.

Öyleyse, ekranın 100 piksel genişliğinde 90 konumunda bir pikseliniz olduğunu ve 20 ekleyeceğinizi varsayalım. 10 konumuna sarılır. Neden ... çünkü 90 + 20 = 110 bu nedenle% 110 100 = 10.

Bunu anlamak için modülonun kesirli sayının tamsayı temsili olduğunu düşünüyorum. Dahası, ifadeyi geriye doğru yaparsanız ve kalanını kesirli bir sayı olarak işlerseniz ve bölene eklerseniz, size orijinal cevabınızı verecektir.

Örnekler:

    100
(A) ---  =  14 mod 2
     7

    123
(B) ---  =  8 mod 3
     15

     3
(C) ---  =  0 mod 3
     4

Tersine mühendislik:

                        2      14(7)    2       98    2     100
 (A) 14 mod 2  =  14 + ---  =  ----- + ---  =  --- + ---  = ---
                        7        7      7       7     7      7

                      3      8(15)    3      120    3      123
 (B) 8 mod 3  =  8 + ---  =  ----- + ---  =  --- + ---  =  ---
                      15       15     15      15    15      15

                      3       3
 (B) 0 mod 3  =  0 + ---  =  ---
                      4       4

2

2'yi 4'e böldüğünüzde, 2 kaldı veya 2 kaldı. Modulo, sayıyı böldükten sonra kalan kısımdır.


1

Bence modulo denkleminin nasıl okunduğu konusunda kafanız karışıyor.

Böyle bir bölünme denklemi yazdığımızda 2/4, 2'yi 4'e bölüyoruz.

Bölündüğümüz gibi bir modulo denklemi 2 % 4yazıldığında 2 by 4(4 üzerinden 2'yi düşünün) ve geri kalanını geri veriyoruz .


1

MOD geri kalan operatördür. Bu nedenle 2 mod 4 kalan olarak 2 verir. 4 * 0 = 0 ve sonra 2-0 = 2. Daha anlaşılır kılmak için 6 mod 4 veya 8 mod 3 ile aynı işlemi yapmaya çalışın.


1

Bu Öklid Algoritması.

Örneğin

a mod b = k * b + c => a mod b = c, burada k bir tam sayı ve c cevaptır

4 mod 2 = 2 * 2 + 0 => 4 mod 2 = 0

27 mod 5 = 5 * 5 + 2 => 27 mod 5 = 2

yani cevabın

2 mod 4 = 0 * 4 + 2 => 2 mod 4 = 2


1

İçin:

2 mod 4

Biraz düşündükten sonra bulduğum bu küçük formülü kullanabiliriz, belki de bilmediğim bir yerde tanımlanmış ama benim için çalışıyor ve gerçekten kullanışlı.

A mod B = C C cevabı nerede

K * B - A = |C| K, B'nin A'ya kaç kez uyduğu

2 mod 4 olabilir:

0 * 4 - 2 = |C|

C = |-2| => 2

Umarım sizin için çalışır :)


1

Mod işlemi hatırlatıcı ile çalışır.

Buna modüler aritmetik denir.

 a==b(mod m) 
 then m|(a-b)
 a-b=km 
 a=b+km
 So, 2=2+0*4

1

Bir modüloya cevap vermek için x % y iki soru soruyorsunuz:

A- Kalan olmadan kaç kez ygiriyor x? % 2 4 için bu 0'dır.

B- Bundan geri almak için ne kadar eklemeniz gerekiyor x? 0'dan 2'ye geri dönmek için 2-0, yani 2'ye ihtiyacınız olacak.

Bunlar şöyle bir soruda özetlenebilir: xtarafından bölünmenin tamsayı-ish sonucuna ygeri dönmek için ne kadar eklemeniz gerekecek x?

Tamsayı-ish ile ilgilenilen kesirler değil sadece tam sayılar kastedilmektedir.

Bir kesirli bölme kalanı (örn., 283849) modulo ile ilgilenmez, çünkü modulo sadece tamsayı sayılarıyla ilgilidir.


0

Bunu düşünmenin görsel bir yolu için, özel örneğinizde, 12 yerine 4'e giden bir saat yüzü hayal edin. Eğer saat 4'te başlarsanız (sıfırdan başlamak gibidir) ve saat yönünde 2 "saat", 2 inmek, tıpkı 6 "saat" için saat yönünde dolaşmak gibi 2 de inecek (2 mod 4 == 2 gibi 6 mod 4 == 2).


6
Aslında oldukça kafa karıştırıcı.
Joe Phillips

@ do3boy: saat yüzü fikri tam olarak modulo gerçeğini tanımlamak için çok basit ve kolay bir yöntemdir. ancak mevcut konumların sayısını değiştirmek yerine 24 saat formatını açıklamak daha kolay olurdu.
Atmocreations

0

Bu modr () işlevinden bahsetmek için iyi bir zaman olabilir. Bir bölümün hem tamamını hem de geri kalan kısımlarını döndürür.

print("\n 17 // 3 =",17//3," # Does the same thing as int(17/3)")
print(" 17 %  3 =",17%3," # Modulo division gives the remainder.")
whole, remain = divmod(17,3)
print(" divmod(17,3) returns ->",divmod(17,3),end="")
print(" because 3 goes into 17,",whole,"times with a remainder of",remain,end=".\n\n")
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.