เครื่องคำนวณโมดูโล (Modulo)

เศษ (a mod b)
ถัดไป

การดำเนินการโมดูโล (หรือ “mod”) จะคืนค่าเศษเหลือหลังการหารจำนวนเต็ม เช่น 17 mod 5 = 2 เพราะ 17 = 3·5 + 2 การดำเนินการนี้เป็นหัวใจของเลขคณิตนาฬิกา การเข้ารหัส ฟังก์ชันแฮช และรูปแบบ “ทุกๆ แถวที่ N” ใน SQL เครื่องคำนวณนี้รับตัวตั้งเป็นจำนวนเต็มหรือทศนิยม แสดงผลหารและเศษเหลืออย่างชัดเจน และจัดการความแตกต่างของกฎเครื่องหมายระหว่างภาษา (% ใน Python ≠ % ใน C สำหรับค่าลบ)

วิธีคำนวณ a mod b

  1. 1

    ป้อนตัวตั้ง (a) และตัวหาร (b)

    ตัวเลขใดก็ได้ ทั้งทศนิยมและค่าลบก็ใช้ได้

  2. 2

    เลือกกฎเครื่องหมาย

    การหารแบบตัดทอน (C, Java, Go) และการหารแบบปัดลง (Python, Ruby, ตามหลักคณิตศาสตร์)

  3. 3

    อ่านผลหารและเศษเหลือ

    a = q·b + r โดยเครื่องหมายของ r เป็นไปตามกฎที่เลือก

  4. 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 ดังนั้นเศษเหลือคือ 2
  • 25 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 ที่อ้างอิงหลักวิทยาศาสตร์

เครื่องคำนวณขนาดท่อลม

ประมาณขนาดท่อลมกลมหรือสี่เหลี่ยมจากอัตราการไหลและความเร็วเป้าหมาย หรือตรวจสอบความเร็วลมในท่อเดิมด้วยหน่วยเมตริก

เครื่องมือนี้มีให้บริการในภาษาอื่น