เครื่องคำนวณโมดูโล (Modulo)
การดำเนินการโมดูโล (หรือ “mod”) จะคืนค่าเศษเหลือหลังการหารจำนวนเต็ม เช่น 17 mod 5 = 2 เพราะ 17 = 3·5 + 2 การดำเนินการนี้เป็นหัวใจของเลขคณิตนาฬิกา การเข้ารหัส ฟังก์ชันแฮช และรูปแบบ “ทุกๆ แถวที่ N” ใน SQL เครื่องคำนวณนี้รับตัวตั้งเป็นจำนวนเต็มหรือทศนิยม แสดงผลหารและเศษเหลืออย่างชัดเจน และจัดการความแตกต่างของกฎเครื่องหมายระหว่างภาษา (% ใน Python ≠ % ใน C สำหรับค่าลบ)
วิธีคำนวณ a mod b
-
1
ป้อนตัวตั้ง (a) และตัวหาร (b)
ตัวเลขใดก็ได้ ทั้งทศนิยมและค่าลบก็ใช้ได้
-
2
เลือกกฎเครื่องหมาย
การหารแบบตัดทอน (C, Java, Go) และการหารแบบปัดลง (Python, Ruby, ตามหลักคณิตศาสตร์)
-
3
อ่านผลหารและเศษเหลือ
a = q·b + r โดยเครื่องหมายของ r เป็นไปตามกฎที่เลือก
-
4
ดูนิพจน์ทางคณิตศาสตร์
ค่าที่แทนลงไปทำให้แต่ละขั้นตอนมองเห็นได้ชัดเจน
สองกฎสำหรับจำนวนลบ
สำหรับตัวตั้งที่เป็นบวก ทุกกฎให้ผลตรงกัน คือ 17 mod 5 = 2 แต่สำหรับจำนวนลบ แต่ละภาษาจะแตกต่างกัน
| ภาษา | -17 mod 5 |
กฎ |
|---|---|---|
| Python, Ruby | 3 | ปัดลง |
| C, Java, Go, JS | -2 | ตัดทอน |
| ตำราคณิตศาสตร์ | 3 | ปัดลง (โดยทั่วไป) |
การหารแบบปัดลง: ผลหารถูกปัดไปทาง −∞ เศษเหลือจะมีเครื่องหมายเดียวกับตัวหารเสมอ คือเครื่องหมายเดียวกับ b
การหารแบบตัดทอน: ผลหารถูกปัดไปทางศูนย์ เศษเหลือจะมีเครื่องหมายเดียวกับตัวตั้ง คือเครื่องหมายเดียวกับ a
สำหรับ a = -17, b = 5:
- ตัดทอน: q = -3 (ปัดไปทาง 0), r = -17 − (-3)·5 = -2
- ปัดลง: q = -4 (ปัดไปทาง -∞), r = -17 − (-4)·5 = 3
ทั้งสองแบบถูกต้องตามกฎของแต่ละแบบ เลือกให้ตรงกับภาษาที่คุณใช้
โมดูโลปรากฏที่ไหนบ้าง
- เวลา นาทีในหนึ่งชั่วโมง วันในสัปดาห์ วินาทีในหนึ่งวัน ทั้งหมดล้วนเป็นเลขคณิตแบบโมดูโล
- ตารางแฮช
hash(key) mod table_sizeเลือกบักเก็ต - การจัดคิวแบบวนรอบ (round-robin)
task_i mod worker_countมอบหมายงาน - การเข้ารหัส RSA และ Diffie-Hellman สร้างขึ้นบน mod
nโดยใช้จำนวนเฉพาะขนาดใหญ่มาก - ทุกๆ แถวที่ N ใน SQL:
WHERE id % 3 = 0 - การตรวจเลขคู่/เลขคี่
n mod 2 == 0หมายถึงเลขคู่ - ลวดลายสลับ การทำแถบสีตามแถว การลงสีสลับทีละองค์ประกอบ
- บัฟเฟอร์วงกลม
(index + 1) mod sizeวนกลับมาที่จุดเริ่มต้น
เอกลักษณ์ที่มีประโยชน์
(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สามารถคำนวณได้ด้วยการยกกำลังแบบมอดุลาร์อย่างรวดเร็วในเวลา O(log k) ซึ่งสำคัญมากต่อการเข้ารหัสจำนวนขนาดใหญ่a mod 1 = 0สำหรับจำนวนเต็ม a ใดๆa mod a = 0
โมดูโลของจำนวนทศนิยม
สำหรับจำนวนจริง นิยามตามธรรมชาติคือ a mod b = a − b · floor(a/b) โดย 7.5 mod 2.5 = 0 เพราะ 7.5 เป็นพหุคูณที่ลงตัวพอดี และ 7.6 mod 2.5 = 0.1
ตัวดำเนินการ % ของ JavaScript ทำงานกับจำนวนจริง ส่วน fmod ของ Python ให้โมดูโลจำนวนจริงแบบตัดทอน และ % ของ Python ให้โมดูโลจำนวนจริงแบบปัดลง
ตัวอย่างที่คำนวณแล้ว
100 mod 7: 100 = 14·7 + 2 ดังนั้นเศษเหลือคือ 225 mod 4: 25 = 6·4 + 1 ดังนั้นเศษเหลือคือ 1-10 mod 3(แบบปัดลง):-10 = -4·3 + 2เศษเหลือคือ 2 (แบบตัดทอนจะได้-1)17.5 mod 5: 17.5 = 3·5 + 2.5 เศษเหลือคือ 2.5
คำถามที่พบบ่อย
ส่วนใหญ่แล้วเป็นคำที่ใช้แทนกันได้ ในเชิงรูปแบบ “modulo” มักหมายถึงกฎทางคณิตศาสตร์ (แบบปัดลง) ขณะที่ “remainder” มักหมายถึงแบบตัดทอน (สไตล์ C) ชื่อเหล่านี้ปรากฏในเอกสารของภาษาโปรแกรม เมื่อจำเป็นควรระบุกฎที่ใช้ให้ชัดเจน
Python ใช้กฎทางคณิตศาสตร์ (ปัดลง) ซึ่งทำให้เครื่องหมายของเศษเหลือตรงกับตัวหาร ส่วน C ใช้กฎของหน่วยคำนวณฮาร์ดแวร์ (ALU) แบบตัดทอน ซึ่งทำให้เครื่องหมายของเศษเหลือตรงกับตัวตั้ง ทั้งสองแบบไม่ได้ผิด เป็นเพียงทางเลือกที่ต่างกัน
ไม่ได้, การหารด้วยศูนย์ไม่นิยาม เครื่องคำนวณจะคืนค่าข้อผิดพลาดเมื่อ b = 0
โดยทั่วไปใช่ โปรดตรวจสอบข้อกำหนดของภาษาที่คุณใช้เกี่ยวกับการจัดการจำนวนลบ, Python และ Ruby ต่างจาก C, Java, Go และ JavaScript
สำหรับคณิตศาสตร์แบบ RSA ที่ใช้จำนวนขนาด 2048 บิต ควรใช้ไลบรารีเฉพาะทาง (pow(a, b, n) ของ Python, BigInteger.modPow ของ Java) เครื่องคำนวณนี้รองรับค่าทั่วไปในชีวิตประจำวัน ไม่ใช่ค่าระดับการเข้ารหัส
เครื่องมือที่เกี่ยวข้อง
เครื่องคำนวณขนาดเครื่องลดความชื้น
ประเมินกำลังเครื่องลดความชื้นแบบเคลื่อนย้ายได้จากพื้นที่และระดับความชื้นตามคำแนะนำ ENERGY STAR ปัจจุบัน
เครื่องคำนวณเลขยกกำลัง
คำนวณฐานยกด้วยเลขชี้กำลังที่เป็นจำนวนเต็ม ทศนิยม จำนวนลบ หรือเศษส่วน ความแม่นยำเต็มและสัญกรณ์วิทยาศาสตร์สำหรับผลลัพธ์ที่ใหญ่หรือเล็กมาก
เครื่องคำนวณความยาวสายพาน
คำนวณความยาวอ้างอิงแบบพิตช์ ดาตัม หรือประสิทธิผลของสายพานเปิดอย่างแม่นยำ จากเส้นผ่านศูนย์กลางอ้างอิงของพูลเลย์สองตัวและระยะศูนย์เพลา
เครื่องคำนวณค่า eGFR
ประเมิน eGFR จากครีอะตินีนในซีรัม อายุ และเพศ ด้วยสมการครีอะตินีน CKD-EPI 2021 ที่ไม่ใช้ปัจจัยเชื้อชาติ ผลลัพธ์เป็น mL/min/1.73 m²
เครื่องคำนวณแคลอรีที่เผาผลาญ
ประมาณแคลอรีที่คุณเผาผลาญระหว่างออกกำลังกายจากน้ำหนักตัว ชนิดกิจกรรม และระยะเวลา โดยใช้ค่า MET ที่อ้างอิงหลักวิทยาศาสตร์
เครื่องคำนวณขนาดท่อลม
ประมาณขนาดท่อลมกลมหรือสี่เหลี่ยมจากอัตราการไหลและความเร็วเป้าหมาย หรือตรวจสอบความเร็วลมในท่อเดิมด้วยหน่วยเมตริก
เครื่องมือนี้มีให้บริการในภาษาอื่น
- Modulokalkylator [SV]
- حاسبة باقي القسمة (Modulo) [AR]
- Modulo-Rechner [DE]
- Calculadora de Módulo [ES]
- Calculateur de Modulo [FR]
- Kalkulator Modulo [ID]
- 모듈로 계산기 [KO]
- Modulo-calculator [NL]
- Kalkulator modulo [PL]
- Máy tính modulo [VI]
- 剰余計算機 [JA]
- Calculadora de Módulo [PT]
- Modulo Calculator [EN]
- Calcolatore Modulo [IT]
- Калькулятор остатка от деления [RU]
- Modulo Hesaplayıcı [TR]
- 取模计算器 [ZH]