Sonuç bulunamadı
Şu anda bu terimle ilgili bir şey bulamıyoruz, başka bir şey aramayı deneyin.
İki sayının bölümünden kalanı Modülü Hesaplama Makinesi ile anında bulun. Pozitif veya negatif sayılarda mod alma işlemini öğrenin ve ücretsiz hesaplayın.
Modül
1
Hesaplamanızda bir hata oluştu.
Modülüs işlemi, bir bölme işleminden elde edilen kalanı bulma yöntemidir. Bu işlemin en temel özelliği, kalanı her zaman bir tam sayı olarak döndürmesidir.
Diyelim ki üç çocuğunuz var ve içinde 20 adet şeker bulunan bir kutu aldınız. Tüm şekerleri çocuklarınız arasında adil bir şekilde paylaştırmak, artanları ise bölüp parçalamadan kendinize ayırmak istiyorsunuz. Çocuklarınız henüz okulda. Bu yüzden bölme işleminden kalanı önceden hesaplayıp, artan şekerlerin tadını hemen çıkarabilirsiniz.
İşte tam bu noktada modülüs operatörünü kullanabilirsiniz. Matematikte ve programlamada bu işlem genellikle % işareti veya mod ifadesi ile gösterilir. Küçük sayılarla uğraşırken bu hesaplamayı zihinden yapmak kolaydır. Ancak büyük sayılar söz konusu olduğunda, çevrimiçi bir modülüs hesaplama makinesi kullanmak işinizi çok daha kolaylaştıracaktır.
İlgili denklem şu şekilde ifade edilebilir:
Bölünen = (Bölüm × Bölen) + Kalan
Verdiğimiz örnekte:
Modülüs işlemini kullanarak bunu formüle dökersek şu şekilde yazabiliriz:
x % y = r
veya
x mod y = r
Burada x bölüneni, y böleni ve r ise kalanı temsil eder.
Bizim örneğimizde bu durum:
20 % 3 = 2
Konuyu daha iyi anlamak için pratik bir durumu örnek alalım.
Wayan, Bali'de yaşıyor ve altı odalı küçük bir misafirhane inşa ediyor. Banyoları fayansla kaplamayı planlıyor. Komşusu Gede ise kendi otelinin inşaatını yeni bitirmiş ve elinde kalan fayansları Wayan'a büyük bir indirimle satmayı teklif ediyor.
Komşusu deposunu kontrol ettiğinde her birinde 4 adet (60 × 60 cm) fayans bulunan 15 kutu ve dışarıda 2 adet tekli fayans buluyor. Bu da toplamda 62 fayans anlamına geliyor. Gede, elindeki tüm fayansları tek seferde satmak niyetinde.
Şimdi Wayan'ın, bu fayanslarla tam olarak kaç banyoyu kaplayabileceğini ve geriye kaç fayans kalacağını hesaplaması gerekiyor.
Peki, elinizin altında bir mod hesaplama aracı olmadan mod alma işlemi manuel olarak nasıl yapılır?
Wayan, misafirhanesindeki standart bir banyonun ölçülerini alıyor ve her bir banyo için tam 14 fayansa ihtiyacı olduğunu hesaplıyor.
Şimdi manuel hesaplama adımlarına geçelim!
Basitleştirilmiş ve matematiksel olarak ifade edilmiş haliyle bu işlemi şu şekilde yazabiliriz:
62 % 14 = 6
veya
62 mod 14 = 6
Wayan bu teklifin harika bir fırsat olduğuna karar veriyor; çünkü fayans kesim hataları veya kırılma risklerine karşı her zaman yaklaşık %10'luk bir yedek fayans payı bırakması gerektiğini biliyor. Geriye kalan iki banyo için gereken fayansları ise yerel bir yapı marketten satın alacak.
Gördüğünüz gibi, bir çevrimiçi mod hesaplama makinesi tüm bu uzun manuel işlemlere gerek kalmadan bu sonucu size saniyeler içinde verebilirdi.
"Modüler aritmetik" olarak bilinen matematik dalı, döngüsel yapılarla ilgilenir. Bu kavramı zihninizde canlandırmanın en kolay yolu, 12 saatlik döngüye sahip klasik bir saat kadranı düşünmektir. Bir matematikçinin gözünde bu saat kadranı aslında mod 12'yi ifade eder.
Eğer 251 saatin günlere tam olarak bölünüp bölünmediğini, yani geriye kalan saat olup olmadığını merak ediyorsanız, işlemi
251 mod 24
şeklinde uygulayabilirsiniz.
Bu işlemin sonucu 11'dir. Kalan sıfır olmadığı için cevap hayır; 251 saat günlere tam olarak bölünmez! Yalnızca sonuç 0 çıktığında bölme işleminin kalansız (tam) gerçekleştiğini söyleyebiliriz.
Daniel, Atlanta'dan Miami'ye giden bir otobüse binecektir. Otobüs öğleden sonra saat 1'de (13:00) hareket ediyor ve yolculuk tam 15 saat sürüyor. Peki Daniel Miami'ye vardığında saat kaç olacak? Modüler aritmetik ile bu işlemi şöyle ifade ederiz:
1 + 15 mod 12
Bu işlemin sonucu 4'tür. Dolayısıyla, Daniel Miami'ye vardığında saat sabahın 4'ü olacaktır.
Modül operatörünün en temel ve yaygın kullanımlarından biri, bir sayının tek mi yoksa çift mi olduğunu tespit etmektir. Bu işlem x % 2 formülü ile yapılır ve sonuç her zaman ya 0 ya da 1 çıkar. Çift sayılar 2'ye tam bölündükleri için sonuç her zaman 0 olurken, tek sayılarda kalan daima 1'dir.
Programlamada modülüs işleminin en popüler kullanım senaryolarından biri, bir tablo oluştururken satır renklerini ardışık olarak değiştirmektir. Örneğin, satırları sırasıyla açık mavi ve açık gri yapmak istediğinizde, yazılımın o an tek mi yoksa çift mi bir satırda olduğunu anlaması için mod (kalan bulma) işlemi kullanılır.
Birim dönüştürme, modül operasyonunun pratik hayattaki en tipik örneklerinden biridir. Genellikle dakika, inç veya santimetre gibi küçük birimleri; saat, mil veya kilometre gibi daha büyük birimlere çevirmek istediğimizde sıkça karşımıza çıkar. Ondalık veya kesirli sayılar, zaman ve mesafe gibi ölçümlerde her zaman anlaşılır sonuçlar vermeyebilir.
Örneğin, 373 dakikanın kaç saat ettiğini bulmak istiyorsak, cevabın "6 saat 13 dakika" olarak ifade edilmesi, "6.2166666666666666667 saat" gibi karmaşık bir ondalık sayıdan çok daha kullanışlı ve anlamlıdır.
Standart bir bölme işlemi (aşağı doğru en yakın tam sayıya yuvarlanarak) bize toplam saat sayısını verirken, arta kalan dakikaları bulmak için modülüs operasyonu devreye girer. Zaman, mesafe, basınç, enerji veya bilgisayar veri depolama alanları (byte, kilobyte vb.) ile uğraşırken birimleri hatasız dönüştürmek için her zaman bu formülü kullanabilirsiniz.
Modülüs operatörünün bir diğer zekice kullanımı, belirli bir yılın artık yıl olup olmadığını hesaplamaktır. Artık yıl, güneş takvimine göre bir yılın 365 yerine 366 gün sürdüğü yıldır. Bu fazladan gün, takvimimize 29 Şubat olarak eklenir.
Tarihsel olarak bakarsak; M.Ö. 45 yılının 1 Ocak gününde Roma diktatörü Jül Sezar, İskenderiyeli astronomlar tarafından geliştirilen yeni bir takvimi yürürlüğe soktu. Bu takvim, astronomik bir yılın yaklaşık 365,25 gün (365 gün ve 6 saat) olduğu hesaplamasına dayanıyordu ve tarih sahnesinde Jülyen Takvimi olarak adlandırıldı.
Her yıl oluşan 6 saatlik bu kaymayı telafi etmek amacıyla Sezar, artık yıl sistemini getirdi. Buna göre üç yıl boyunca bir yıl 365 gün kabul ediliyor, dört yılda bir ise Şubat ayına fazladan bir gün ekleniyordu.
Ancak zaman ilerledikçe bu basit kuralın tek başına yeterli olmadığı anlaşıldı.
Gerçekte ortalama tropikal yıl (iki ilkbahar ekinoksu arasında geçen süre) tam olarak 365 gün, 5 saat ve 49 dakikadır. Jülyen takvimi ile bu gerçek astronomik yıl arasındaki yaklaşık 11 dakikalık fark, her 128 yılda birikerek fazladan tam bir gün oluşturuyordu.
Biriken bu hataları düzeltmek ve gelecekte mevsimlerin takvimden kaymasını önlemek için Papa XIII. Gregory, 1582 yılında takvimde kapsamlı bir reform yaptı. Artık yıl hesaplaması için yeni ve hassas kurallar belirledi. 4'ün katı olan yıllar kuralı aynen korundu, ancak 100'ün katı olan yüzyıl başlarındaki yıllar (1700, 1800 vb.) için bir istisna getirildi. Buna göre, bu tür yıllar sadece 400 sayısına tam bölünebiliyorlarsa artık yıl kabul edilecekti.
Günümüzde de kullandığımız (Miladi) artık yıl belirleme kuralları böylece şu şekli aldı:
Sonuç olarak 1700, 1800 ve 1900 yılları artık yıl değildir, çünkü 100'e bölünürken 400'e tam bölünemezler. Ancak 1600 ve 2000 yılları, 400'ün tam katı oldukları için artık yıldır.
Şimdi bu işin matematiğine, yani mod hesaplamasına geri dönelim.
Kurallardan anladığımız üzere:
Basit bir Python betiği (script) yazarak bir yılın artık yıl olup olmadığını saniyeler içinde hesaplayabilirsiniz. Bu kod parçası şöyle görünür:
year = int(input('Yıl girin: '))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print(year, "bir artık yıldır.")
else:
print(year, "bir artık yıl değildir.")
Programlamada ve yazılım geliştirmede modülüs operatörünün diğer popüler kullanım alanları şunlardır:
Modülüs işlemi; bilgisayar donanımlarında ve telekomünikasyon sistemlerinde kontrol algoritmaları oluşturmak veya sınırlı bir aralıkta rastgele (random) sayılar üretmek için de sıklıkla kullanılır. Bunun en bilinen örneklerinden biri "Doğrusal Uyumlu Rastgele Sayı Üreteci" (Linear Congruential Generator) yöntemidir. Bu yöntem, 1949 yılında Derrick Henry Lehmer tarafından geliştirilmiştir.
Doğrusal uyumlu yöntem temelde şu matematiksel formüle göre çalışır:
$$X_{n+1} = (a × X_n + c)\mod m$$
Bu formülde:
Örnek verecek olursak; m = 11, X₀ = 9, a = 9, c = 9 değerleri formüle yerleştirildiğinde şu rastgele sayı dizisini elde ederiz:
9, 2, 5, 10, 0, 9, 2, 5, 10, 0, 9
Şifreleme uzmanları (kriptograflar) modülüs işlemini çok severler. Bunun en büyük sebebi, çok büyük devasa sayılarla kullanıldığında mod alma işleminin "tek yönlü fonksiyonlar" (one-way functions) adı verilen güçlü şifreleme yapıları oluşturabilmesidir. Bu özel matematiksel fonksiyonların özelliği, hesaplamanın bir yönde çok kolay yapılırken, tersten çözülmesinin neredeyse imkansız olmasıdır.
Örneğin; bir işlemin sonucunun 9 olduğunu ve bu işlemin "bir sayının karesini almak" olduğunu biliyorsanız, başlangıçtaki sayının 3 olduğunu hemen bulabilirsiniz. Tüm süreci geriye doğru kolayca zihninizde canlandırabilirsiniz. Ancak size "bir sayının 29'a bölümünden kalanın (mod 29) 9 olduğunu" söylersem, başlangıçtaki orijinal sayıyı bulmanız çok daha karmaşık ve zordur.
İşte tam da bu asimetrik zorluk derecesi, kriptografların en büyük silahıdır. Devasa asal sayılar üretmek, kırılmaz şifreler yaratmak ve dijital güvenlik için kriptografik anahtarlar oluşturmak adına kalanlı bölme işleminden (modüler aritmetik) faydalanırlar.
İster elinizdeki nesneleri saklama kutularına eşit olarak paylaştırmaya çalışın, ister devasa bir sayının başka bir sayıya kalansız bölünüp bölünemediğini bulmak isteyin, isterseniz de sadece zamanla ilgili bir birim dönüşümü yapın; modülüs işlemi her zaman imdadınıza yetişir. Hayatın içinden gelen tüm bu problemlerde, bölme işlemindeki "kalan", en az "bölüm" kadar kritik bir öneme sahiptir.
Gündelik hayatta karşılaştığımız bazı mod problemleri basit ve zihinden çözülebilir düzeydedir. Ancak veriler büyüdüğünde ve işler karmaşıklaştığında, hatasız ve hızlı bir sonuca ulaşmak için pratik bir çevrimiçi modülüs hesaplama makinesi kullanmak her zaman en akıllıca yoldur.