Modulo Hesaplayıcı

Kalan (a mod b)
Sonraki

Modulo (veya “mod”) işlemi, tam sayı bölmesinden sonra kalanı döndürür: 17 = 3·5 + 2 olduğundan 17 mod 5 = 2. Saat aritmetiğinin, kriptografinin, hash fonksiyonlarının ve SQL’deki “her N. satır” deseninin kalbidir. Bu hesaplayıcı tam sayı veya ondalık işlenenleri kabul eder, bölümü ve kalanı açıkça gösterir ve diller arasındaki işaret kuralı farklarını ele alır (negatif sayılar için Python’daki % ≠ C’deki %).

a mod b nasıl hesaplanır

  1. 1

    Bölüneni (a) ve böleni (b) girin

    Her tür sayı; ondalık ve negatif değerler kabul edilir.

  2. 2

    İşaret kuralını seçin

    Kesmeli bölme (C, Java, Go), aşağı yuvarlamalı bölme (Python, Ruby, matematiksel kural).

  3. 3

    Bölümü ve kalanı okuyun

    a = q·b + r, r'nin işareti için seçilen kuralla.

  4. 4

    Matematiksel ifadeyi görün

    Yerine konan değerler her adımı görünür kılar.

Negatif sayılar için iki kural

Pozitif işlenenlerde tüm kurallar aynı fikirdedir: 17 mod 5 = 2. Negatif sayılarda diller farklılaşır:

Dil -17 mod 5 Kural
Python, Ruby 3 Aşağı yuvarlama
C, Java, Go, JS -2 Kesme
Matematik ders kitapları 3 Aşağı yuvarlama (genellikle)

Aşağı yuvarlamalı bölme: bölüm −∞ yönünde yuvarlanır. Kalan her zaman bölenin işaretini taşır: b ile aynı işaret. Kesmeli bölme: bölüm sıfır yönünde yuvarlanır. Kalan bölünenin işaretini taşır: a ile aynı işaret.

a = -17, b = 5 için:

  • Kesme: q = -3 (0 yönünde yuvarlandı), r = -17 − (-3)·5 = -2.
  • Aşağı yuvarlama: q = -4 (-∞ yönünde yuvarlandı), r = -17 − (-4)·5 = 3.

Kuralına göre her ikisi de doğrudur. Dilinize uyanı seçin.

Modulo nerede karşımıza çıkar

  • Zaman. Bir saatteki dakikalar, haftanın günleri, bir gündeki saniyeler, hepsi modulo aritmetiğidir.
  • Hash tabloları. hash(key) mod table_size bir kova seçer.
  • Round-robin zamanlama. task_i mod worker_count işi dağıtır.
  • Kriptografi. RSA ve Diffie-Hellman, devasa asal sayılarla mod n üzerine kuruludur.
  • Her N. satır. SQL’de: WHERE id % 3 = 0.
  • Tek/çift kontrolü. n mod 2 == 0 çift demektir.
  • Dönüşümlü desenler. Satır şeritleme, her ikinci ögeyi renklendirme.
  • Dairesel tamponlar. (index + 1) mod size başa sarar.

Yararlı özdeşlikler

  • (a + b) mod n = ((a mod n) + (b mod n)) mod n
  • (a · b) mod n = ((a mod n) · (b mod n)) mod n
  • (a^k) mod n hızlı modüler üs alma ile O(log k) sürede hesaplanabilir, büyük sayı kriptografisi için kritik.
  • Her tam sayı a için a mod 1 = 0.
  • a mod a = 0.

Ondalık modulo

Gerçek sayılar için doğal tanım a mod b = a − b · floor(a/b) şeklindedir. 7,5 tam bir kat olduğundan 7.5 mod 2.5 = 0. 7.6 mod 2.5 = 0.1.

JavaScript’in % operatörü gerçek sayılarla çalışır; Python’un fmod‘u kesmeli gerçek modulo yapar; Python’un %’i aşağı yuvarlamalı gerçek modulo yapar.

Çözümlü örnekler

  • 100 mod 7: 100 = 14·7 + 2, yani kalan 2.
  • 25 mod 4: 25 = 6·4 + 1, yani kalan 1.
  • -10 mod 3 (aşağı yuvarlama): -10 = -4·3 + 2, kalan 2. (Kesme -1 verirdi.)
  • 17.5 mod 5: 17,5 = 3·5 + 2,5, kalan 2,5.

Sık Sorulan Sorular

Çoğu zaman eş anlamlıdırlar. Biçimsel olarak “modulo” çoğunlukla matematiksel kuralı (aşağı yuvarlama) ima ederken, “remainder” (kalan) çoğunlukla kesmeli (C tarzı) varyantı belirtir. Bu adlar dil belgelerine sızar; önemli olduğunda kuralı açıkça belirtin.

Python matematiksel kuralı (aşağı yuvarlama) izler; böylece kalanın işareti bölenle eşleşir. C, donanım ALU kuralını (kesme) izler; burada kalanın işareti bölünenle eşleşir. Hiçbiri yanlış değil; farklı tercihlerdir.

Hayır, sıfıra bölme tanımsızdır. Hesaplayıcı b = 0 için bir hata döndürür.

Genellikle evet. Negatif sayı işleme için dilinizin belgelerine bakın, Python ve Ruby; C, Java, Go ve JavaScript’ten farklıdır.

2048 bitlik sayılarla RSA tarzı matematik için özel bir kütüphane kullanın (Python’da pow(a, b, n), Java’da BigInteger.modPow). Bu hesaplayıcı günlük değerleri işler, kriptografik düzeydeki değerleri değil.

İlgili Araçlar

Araç diğer dillerde mevcuttur