Kalkulator Modulo

Operasi modulo mengembalikan baki daripada pembahagian. Untuk nombor positif semua orang bersetuju: 17 mod 5 = 2. Tetapi untuk nombor negatif, bahasa pengaturcaraan dan ahli matematik berbeza pandangan. Konvensyen matematik mentakrifkan a mod b supaya hasilnya sentiasa dalam julat [0, |b|) — jadi -7 mod 3 = 2. Konvensyen C/Go/JavaScript menggunakan pembahagian terpotong (truncated), jadi baki mengikut tanda nombor yang dibahagi — bermaksud -7 % 3 = -1. Kalkulator ini menunjukkan kedua-duanya supaya anda boleh memilih yang diharapkan oleh bidang anda. Ia juga menyokong modulo titik apungan (digunakan dalam pelilitan sudut, aritmetik jam, dan pemprosesan isyarat) dan menerangkan setiap langkah pengiraan.

star 4.8
auto_awesome AI
New

Kalkulator Modulo calculator

percent a mod b

The number being divided. Integers or decimals, positive or negative.

The modulus. Must be non-zero.

analytics Result

Modulo (math, floored)
2
Always in range [0, |b|)
Remainder (C-style, truncated) 2

Sign follows dividend. Matches C, C++, Go, Java, JavaScript (%).

Quotient (floor)
3
Quotient (trunc)
3
Step by step

    tips_and_updates Tips

    • Gunakan modulo matematik (floored) untuk aritmetik modular, peng hashing (hashing), dan pelilitan sudut
    • Gunakan modulo gaya C (truncated) apabila memadankan tingkah laku C, C++, Go, Java, atau JavaScript
    • Untuk a dan b yang positif, kedua-dua konvensyen bersetuju, jadi perbezaan hanya penting dengan nombor negatif
    • Modulo dengan sifar tidak ditentukan — pembahagi mestilah bukan sifar
    • Operator % Python menggunakan modulo matematik (floored): -7 % 3 = 2

    The Formula

    Modulo matematik menggunakan pembahagian lantai (floor division) supaya bakinya sentiasa 0 <= r < |b|. Modulo gaya C menggunakan pembahagian terpotong supaya bakinya mempunyai tanda yang sama seperti dividen.

    r = a - b * q, where q = floor(a/b) (math) or trunc(a/b) (C-style)

    lightbulb Variables Explained

    • a Dividen (nombor yang dibahagi)
    • b Pembahagi (modulus)
    • q Hasil bahagi (dibulatkan ke bawah atau dipotong)
    • r Baki / keputusan modulo

    tips_and_updates Pro Tips

    1

    Gunakan modulo matematik (floored) untuk aritmetik modular, peng hashing (hashing), dan pelilitan sudut

    2

    Gunakan modulo gaya C (truncated) apabila memadankan tingkah laku C, C++, Go, Java, atau JavaScript

    3

    Untuk a dan b yang positif, kedua-dua konvensyen bersetuju, jadi perbezaan hanya penting dengan nombor negatif

    4

    Modulo dengan sifar tidak ditentukan — pembahagi mestilah bukan sifar

    5

    Operator % Python menggunakan modulo matematik (floored): -7 % 3 = 2

    Operasi modulo (sering ditulis sebagai a mod b atau a % b) mengembalikan baki selepas membahagikan satu nombor dengan nombor yang lain dan merupakan salah satu operasi yang paling kerap digunakan dalam matematik dan sains komputer. Kalkulator modulo mengira baki ini untuk sebarang dividen dan pembahagi, termasuk nombor negatif dan perpuluhan, sambil menunjukkan proses pembahagian langkah demi langkah. Untuk nombor positif, keputusannya adalah mudah: 17 mod 5 sama dengan 2 kerana 17 bahagi 5 ialah 3 dengan baki 2. Walau bagaimanapun, nombor negatif memperkenalkan perbezaan kritikal antara dua konvensyen: konvensyen matematik (lantai) sentiasa mengembalikan keputusan bukan negatif, manakala konvensyen pengaturcaraan (dipotong) yang digunakan dalam C, Java, dan JavaScript mengekalkan tanda dividen. Ini bermakna negatif 7 mod 3 sama dengan 2 dalam matematik tetapi negatif 1 dalam kebanyakan bahasa pengaturcaraan. Memahami kedua-dua konvensyen adalah penting untuk pengaturcara, pakar kriptografi, dan sesiapa sahaja yang bekerja dengan corak berbasikal, aritmetik jam, atau fungsi cincangan (hash).

    Modulo Matematik vs Pengaturcaraan: Masalah Nombor Negatif

    Perbezaan antara konvensyen modulo matematik dan pengaturcaraan terhasil daripada cara ia mengendalikan pembahagian integer. Modulo matematik menggunakan pembahagian lantai (membundar ke arah infiniti negatif), jadi hasil bahagi negatif 7 bahagi 3 dibundarkan ke bawah kepada negatif 3, memberikan baki negatif 7 tolak 3 darab negatif 3 sama dengan 2. Modulo pengaturcaraan menggunakan pembahagian terpotong (membundar ke arah sifar), jadi hasil bahagi dipotong kepada negatif 2, memberikan baki negatif 7 tolak 3 darab negatif 2 sama dengan negatif 1.

    Python menggunakan modulo matematik (lantai) secara unik, memadankan konvensyen yang dijangkakan dalam algebra abstrak dan teori nombor. C, C++, Java, JavaScript, Go, dan Rust menggunakan modulo terpotong. Ruby dan Perl sepadan dengan tingkah laku Python.

    Perbezaan ini penting dalam kod sebenar: menukar sudut negatif kepada julat 0-359 memerlukan modulo matematik (negatif 90 mod 360 sama dengan 270), tetapi operator peratus C memberikan negatif 90, memerlukan pelarasan manual.

    Aplikasi Praktikal Aritmetik Modular

    Aritmetik modular mendasari banyak sistem dunia sebenar yang mengejutkan:

    • Aritmetik jam adalah modular: 10 pagi ditambah 5 jam sama dengan 3 petang kerana 15 mod 12 sama dengan 3.
    • Hari dalam seminggu kitaran dengan modulo 7.
    • Jadual cincangan (Hash tables) menggunakan modulo untuk memetakan kunci kepada indeks baldi: hash(key) mod table_size.
    • Algoritme kriptografi seperti RSA bergantung sepenuhnya pada pengeksponenan modular dan kesukaran mencari songsangan modular untuk perdana besar.
    • Digit semak ISBN dan kad kredit menggunakan operasi modulo untuk pengesanan ralat (ISBN-13 menggunakan mod 10, algoritma Luhn untuk kad kredit).
    • Struktur data berkitaran seperti penimbal gelang (ring buffers) menggunakan modulo untuk membungkus indeks tatasusunan: next_index sama dengan (current ditambah 1) mod buffer_size.

    Malah tugas mudah seperti menentukan sama ada nombor itu genap (n mod 2 sama dengan 0) atau mengekstrak digit terakhir (n mod 10) bergantung pada modulo.

    Modulo dengan Perpuluhan dan Kes Khas

    Operasi modulo meluas secara semula jadi kepada nombor nyata menggunakan formula yang sama: r sama dengan a tolak b darab floor(a dibahagi b). Sebagai contoh, 5.5 mod 2 sama dengan 1.5 kerana floor(5.5/2) sama dengan 2, dan 5.5 tolak 2 darab 2 sama dengan 1.5.

    Modulo titik apungan (floating-point) digunakan secara meluas dalam grafik komputer untuk pembalut tekstur (u mod 1.0 memetakan sebarang koordinat kepada julat 0 hingga 1), penormalan sudut (theta mod 360 memastikan sudut dalam satu putaran penuh), dan pemprosesan isyarat untuk pengiraan fasa.

    Kes tepi penting:

    • Modulo dengan sifar tidak ditentukan dan akan menyebabkan ralat pembahagian dengan sifar dalam mana-mana bahasa.
    • Modulo di mana dividen adalah sifar sentiasa mengembalikan sifar (0 mod b sama dengan 0 untuk sebarang b bukan sifar).
    • Apabila kedua-dua operand adalah positif dan dividen lebih kecil daripada pembahagi, keputusannya sama dengan dividen (3 mod 7 sama dengan 3).

    Sifat-sifat ini menjadikan modulo boleh diramal untuk nombor positif tetapi memerlukan pengendalian yang berhati-hati dengan input negatif atau perpuluhan.

    Apakah Operasi Modulo dan Bagaimanakah Ia Berfungsi?

    Operasi modulo mengembalikan baki yang tertinggal selepas membahagikan satu integer dengan integer yang lain, ditulis sebagai a mod b atau a % b. Diberikan dividen a dan pembahagi b bukan sifar, ia menjawab soalan: selepas menolak sebanyak mungkin salinan keseluruhan b daripada a, apakah yang tinggal?

    Sebagai contoh, 17 mod 5 = 2 kerana 5 muat ke dalam 17 sebanyak tiga kali (15), meninggalkan 2. Menurut Wolfram MathWorld, fungsi modulo ditakrifkan secara rasmi sebagai baki a dibahagikan dengan b, dan ia sentiasa memenuhi 0 <= r < |b| di bawah konvensyen matematik.

    Operasi mudah ini adalah asas kepada teori nombor, kriptografi, dan pengaturcaraan sehari-hari, membolehkan anda mengesan kebolehbahagian, membungkus nilai ke dalam julat tetap, dan membina tingkah laku berkitaran.

    Formula Modulo: r = a - b * floor(a/b)

    Untuk mengira a mod b dengan tangan, gunakan formula r = a - b * q, di mana q ialah hasil bahagi. Kedua-dua konvensyen hanya berbeza dalam cara q dikira. Modulo matematik (lantai) menetapkan q = floor(a/b), membundar ke arah infiniti negatif; Modulo gaya C (dipotong) menetapkan q = trunc(a/b), membundar ke arah sifar.

    Diselesaikan melalui setiap kes:

    • Untuk 17 mod 5: floor(17/5) = 3, jadi r = 17 - 5*3 = 2.
    • Untuk -7 mod 3 (matematik): floor(-7/3) = floor(-2.33) = -3, jadi r = -7 - 3*(-3) = 2.
    • Untuk -7 % 3 (gaya C): trunc(-2.33) = -2, jadi r = -7 - 3*(-2) = -1.

    Seperti yang dinyatakan oleh NIST Digital Library of Mathematical Functions, lantai dan pemotongan bertepatan untuk operand positif, sebab itulah kedua-dua konvensyen bersetuju apabila a dan b kedua-duanya positif.

    Cara Mengira Modulo Langkah Demi Langkah Dengan Contoh Kerja

    Mengira a mod b ialah proses empat langkah. Pertimbangkan 23 mod 6.

    • Langkah 1: bahagikan, 23 / 6 = 3.833.
    • Langkah 2: ambil hasil bahagi nombor bulat, floor(3.833) = 3.
    • Langkah 3: darab semula, 3 * 6 = 18.
    • Langkah 4: tolak, 23 - 18 = 5.

    Jadi 23 mod 6 = 5, dan sememangnya 23 = 6*3 + 5. Untuk dividen negatif seperti -23 mod 6 (konvensyen matematik), floor(-23/6) = floor(-3.833) = -4, jadi -23 - 6*(-4) = -23 + 24 = 1.

    Khan Academy mengajar kaedah penolakan yang sama ini apabila memperkenalkan aritmetik modular, menekankan bahawa baki mestilah sentiasa lebih kecil dalam magnitud berbanding pembahagi. Sahkan jawapan anda dengan menyemak bahawa a sama dengan b darab hasil bahagi ditambah baki.

    Apakah Aritmetik Modular dan Kongruen?

    Aritmetik modular ialah sistem aritmetik untuk integer di mana nombor berputar semula selepas mencapai nilai tetap yang dipanggil modulus. Dua integer a dan b dikatakan kongruen modulo n, ditulis a ≡ b (mod n), apabila ia meninggalkan baki yang sama apabila dibahagikan dengan n, atau secara setara apabila n membahagikan perbezaan mereka.

    Sebagai contoh, 17 ≡ 5 (mod 12) kerana kedua-duanya meninggalkan baki 5 apabila dibahagikan dengan 12, sebab itulah masa 17:00 dibaca sebagai 5 petang pada jam 12 jam.

    Encyclopaedia Britannica menyifatkan aritmetik modular sebagai aritmetik pada set residu yang terhingga, dan ia diformalkan oleh Carl Friedrich Gauss dalam karyanya pada tahun 1801 Disquisitiones Arithmeticae. Hubungan kongruen mengekalkan penambahan dan darab, menjadikannya tulang belakang algebra kriptografi dan kod pengesanan ralat.

    Kegunaan Sebenar Modulo dalam Pengaturcaraan dan Kehidupan Seharian

    Modulo muncul lebih kerap daripada yang disedari oleh kebanyakan orang:

    • Untuk menguji sama ada nombor itu genap, semak n mod 2 == 0; untuk mengekstrak digit terakhir integer, kira n mod 10.
    • Penimbal gelang dan baris gilir pekeliling (circular queues) membungkus kedudukan tulis mereka dengan index = (index + 1) mod capacity, supaya penunjuk tidak terkeluar dari hujung tatasusunan.
    • Jadual cincangan (Hash tables) memetakan kunci kepada slot menggunakan hash mod table_size.
    • Matematik masa dan kalendar adalah modular: hari dalam seminggu maju sebanyak (day + shift) mod 7, dan jam berjalan pada mod 12 atau mod 24.
    • Digit semak untuk ISBN-13 (mod 10) dan nombor laluan bank, ditambah algoritma Luhn di sebalik pengesahan kad kredit, semuanya bergantung pada modulo untuk menangkap kesilapan taip.
    • Dalam kriptografi, pengeksponenan modular memperkasakan pertukaran kunci RSA dan Diffie-Hellman.

    Sifat Utama dan Identiti Operasi Modulo

    Modulo mematuhi beberapa sifat algebra yang berguna yang memudahkan pengiraan dan pembuktian.

    Peraturan mirip taburan untuk kekongruenan menyatakan bahawa (a + b) mod n = ((a mod n) + (b mod n)) mod n, begitu juga (a * b) mod n = ((a mod n) * (b mod n)) mod n; ini membolehkan anda mengurangkan nilai pertengahan yang besar sebelum mendarab, yang mengelakkan limpahan.

    Identiti penting untuk diingat:

    • Jika dividen lebih kecil daripada pembagi dan kedua-duanya positif, hasilnya hanyalah dividen tersebut, jadi 3 mod 7 = 3.
    • Dividen sifar sentiasa menghasilkan sifar: 0 mod b = 0.
    • Sebarang gandaan modulus memberikan sifar, jadi 20 mod 5 = 0.
    • Hasil a mod b sentiasa kurang secara ketat daripada |b| mengikut konvensyen matematik.

    Identiti ini, yang disenaraikan dalam sumber seperti entri kekongruenan Wolfram MathWorld, menjadikan pengurangan modular cepat dan boleh dijangka.

    Kesilapan Lazim Semasa Mengira Modulo

    Waspada terhadap ralat kerap ini:

    • Menganggap setiap bahasa mengembalikan tanda yang sama untuk operand negatif. -7 % 3 dalam Python menghasilkan 2, tetapi Java, C, and JavaScript menghasilkan -1, jadi menyalin formula antara bahasa tanpa melaraskan boleh membawa pepijat halus, terutamanya dalam pembungkusan sudut atau pengecaman.
    • Cuba melakukan modulo dengan sifar, yang tidak ditentukan dan mencetuskan ralat masa jalan dalam setiap bahasa; sentiasa saahkan bahawa pembagi bukan sifar.
    • Mengelirukan arah pembundaran hasil bahagi, terlupa bahawa pembahagian berlantai dan dipotong berbeza untuk nombor negatif.
    • Menggunakan modulo integer pada nilai titik apungan tanpa mengambil kira pembundaran boleh menghasilkan ralat kecil; 5.5 mod 2 = 1.5 tepat, tetapi hanyutan titik apungan terkumpul mungkin memberikan 1.4999999.
    • Menggunakan n mod 2 == 1 untuk mengesan nombor ganjil gagal untuk nombor negatif dalam bahasa terpotong, di mana -3 % 2 = -1; sebaliknya uji n mod 2 != 0.

    Bagaimana Modulo Berbeza Merentasi Bahasa Pengaturcaraan

    Oleh kerana tanda baki untuk operand negatif adalah pilihan reka bentuk, bahasa terbahagi kepada dua kem.

    • Modulo terpotong (tanda dividen) digunakan oleh C, C++, C#, Java, JavaScript, Go, Rust, and Swift, jadi -7 % 3 dinilai sebagai -1 dalam kesemuanya.
    • Modulo berlantai (tanda pembagi, sentiasa bukan negatif untuk pembagi positif) digunakan oleh Python, Ruby, and Perl, jadi -7 % 3 dinilai sebagai 2.

    Sesetengah bahasa menyediakan kedua-duanya: Python mempunyai math.fmod untuk hasil terpotong gaya C, dan banyak perpustakaan standard mendedahkan fungsi mod-lantai khusus seperti Math.floorMod dalam Java, yang mengembalikan 2 untuk floorMod(-7, 3).

    Apabila memindahkan kod berangka, sentiasa sahkan konvensyen yang digunakan oleh bahasa sasaran. Kalkulator ini menunjukkan kedua-dua hasil matematik (berlantai) dan gaya C (terpotong) bersebelahan supaya anda boleh memadankan mana-mana yang dijangka oleh persekitaran anda.

    Frequently Asked Questions

    sell

    Tags