ฉันไม่เข้าใจจริงๆว่าการแบ่งโมดูลัสทำงานอย่างไร ฉันกำลังคำนวณ27 % 16
และกระทบกระทั่งกับ11
ฉันไม่เข้าใจว่าทำไม
ดูเหมือนฉันจะหาคำอธิบายในเงื่อนไขของคนธรรมดาทางออนไลน์ไม่ได้ ใครสามารถอธิบายในระดับที่สูงมากว่าเกิดอะไรขึ้นที่นี่?
ฉันไม่เข้าใจจริงๆว่าการแบ่งโมดูลัสทำงานอย่างไร ฉันกำลังคำนวณ27 % 16
และกระทบกระทั่งกับ11
ฉันไม่เข้าใจว่าทำไม
ดูเหมือนฉันจะหาคำอธิบายในเงื่อนไขของคนธรรมดาทางออนไลน์ไม่ได้ ใครสามารถอธิบายในระดับที่สูงมากว่าเกิดอะไรขึ้นที่นี่?
คำตอบ:
ผลลัพธ์ของการหารโมดูโลคือส่วนที่เหลือของการหารจำนวนเต็มของตัวเลขที่กำหนด
นั่นหมายความว่า:
27 / 16 = 1, remainder 11
=> 27 mod 16 = 11
ตัวอย่างอื่น ๆ :
30 / 3 = 10, remainder 0
=> 30 mod 3 = 0
35 / 3 = 11, remainder 2
=> 35 mod 3 = 2
คำอธิบายส่วนใหญ่พลาดขั้นตอนสำคัญไปหนึ่งอย่างลองเติมช่องว่างโดยใช้อีกตัวอย่าง
ให้สิ่งต่อไปนี้:
Dividend: 16
Divisor: 6
ฟังก์ชั่นโมดูลัสมีลักษณะเช่นนี้
16 % 6 = 4
มาดูกันว่าทำไมถึงเป็นเช่นนี้
ขั้นแรกให้ทำการหารจำนวนเต็มซึ่งคล้ายกับการหารปกติยกเว้นจำนวนเศษส่วน (aka ที่เหลือ) จะถูกทิ้ง:
16 / 6 = 2
จากนั้นคูณผลลัพธ์ของการหารด้านบน ( 2
) ด้วยตัวหารของเรา( 6
):
2 * 6 = 12
สุดท้ายลบผลลัพธ์ของการคูณด้านบน ( 12
) จากเงินปันผลของเรา( 16
):
16 - 12 = 4
ผลการลบนี้, 4
ที่เหลือเป็นผลเดียวกันของเราโมดูลัสด้านบน!
16 // 6 >>> 2
และ16 / 6 >>> 2.6666666666666665
บางทีตัวอย่างนาฬิกาอาจช่วยให้คุณเข้าใจโมดูโลได้
การใช้เลขคณิตแบบแยกส่วนที่คุ้นเคยคือการใช้ในนาฬิกา 12 ชั่วโมงซึ่งแบ่งวันออกเป็นสองช่วงเวลา 12 ชั่วโมง
สมมติว่าเรามีเวลานี้: 15:00 น.
แต่คุณสามารถบอกได้ว่าเป็นเวลา 15:00 น
นี่คือสิ่งที่โมดูโลทำ:
15 / 12 = 1, remainder 3
คุณพบว่าตัวอย่างนี้อธิบายได้ดีกว่าในวิกิพีเดีย: Wikipedia Modulo Article
สูตรง่ายๆในการคำนวณโมดูลัสคือ: -
[Dividend-{(Dividend/Divisor)*Divisor}]
ดังนั้น 27% 16: -
27- {(27/16) * 16}
27- {1 * 16}
คำตอบ = 11
หมายเหตุ :
การคำนวณทั้งหมดเป็นจำนวนเต็ม ในกรณีของผลหารทศนิยมส่วนหลังทศนิยมจะถูกละเว้น / ตัดทอน
เช่น 27/16 = 1.6875 จะถูกนำมาใช้เป็นเพียง 1 ในสูตรที่กล่าวถึงข้างต้น 0.6875 ถูกละเว้น
คอมไพเลอร์ของภาษาคอมพิวเตอร์ปฏิบัติต่อจำนวนเต็มที่มีส่วนทศนิยมในลักษณะเดียวกัน (โดยการตัดทอนหลังทศนิยม) เช่นกัน
ตัวดำเนินการโมดูลัสรับคำสั่งการหารและส่งกลับสิ่งที่เหลือจากการคำนวณนั้นคือข้อมูล "ที่เหลือ" เพื่อที่จะพูดเช่น 13/5 = 2 ซึ่งหมายความว่ามี 3 ที่เหลือหรือเหลือจากการคำนวณนั้น ทำไม? เพราะ 2 * 5 = 10 ดังนั้น 13 - 10 = 3
ตัวดำเนินการโมดูลัสทำการคำนวณทั้งหมดให้คุณ 13% 5 = 3
การหารโมดูลัสเป็นเพียงแค่นี้: หารสองจำนวนและส่งกลับส่วนที่เหลือเท่านั้น
27/16 = 1 เหลือ 11 ดังนั้น 27% 16 = 11
ditto 43/16 = 2 โดยเหลือ 11 ดังนั้น 43% 16 = 11 ด้วย
ง่ายมาก: a % b
ถูกกำหนดให้เป็นส่วนที่เหลือของการแบ่งการโดยa
b
ดูบทความวิกิพีเดียสำหรับตัวอย่างเพิ่มเติม
ฉันต้องการเพิ่มอีกสิ่งหนึ่ง:
ง่ายต่อการคำนวณโมดูโลเมื่อเงินปันผลมากกว่า / มากกว่าตัวหาร
เงินปันผล = 5 ตัวหาร = 3
5% 3 = 2
3)5(1
3
-----
2
แต่ถ้าตัวหารน้อยกว่าเงินปันผล
เงินปันผล = 3 ตัวหาร = 5
3% 5 = 3 ?? อย่างไร
เนื่องจาก 5 ไม่สามารถหาร 3 โดยตรงโมดูโลจะเป็นตัวปันผล
ฉันหวังว่าขั้นตอนง่ายๆเหล่านี้จะช่วยได้:
20 % 3 = 2
20 / 3 = 6
; อย่าใส่.6667
- อย่าสนใจมัน3 * 6 = 18
20 - 18 = 2
ซึ่งเป็นส่วนที่เหลือของโมดูโลง่ายขึ้นเมื่อตัวเลขของคุณหลังทศนิยม (0.xxx) สั้น จากนั้นสิ่งที่คุณต้องทำคือคูณจำนวนนั้นด้วยจำนวนหลังการหาร
เช่น: 32 % 12 = 8
คุณทำ32/12=2.666666667
แล้วคุณโยนทิ้ง2
และมุ่งเน้นไปที่0.666666667
0.666666667*12=8
<- นั่นคือคำตอบของคุณ
(อีกครั้งง่ายก็ต่อเมื่อตัวเลขหลังทศนิยมสั้น)
การหารโมดูลัสให้ส่วนที่เหลือของการหารแทนที่จะเป็นผลหาร
สมมติว่าคุณมี 17 mod 6
ผลรวมของ 6 จะทำให้คุณใกล้เคียงกับ 17 มากที่สุดมันจะเป็น 12 เพราะถ้าคุณไปมากกว่า 12 คุณจะมี 18 ซึ่งมากกว่าคำถามของ 17 mod 6 จากนั้นคุณจะได้ 12 และลบจาก 17 ซึ่งจะให้คุณ คำตอบของคุณในกรณีนี้ 5.
17 สมัย 6 = 5
การแบ่งโมดูลัสค่อนข้างง่าย ใช้ส่วนที่เหลือแทนผลหาร
1.0833... <-- Quotient
__
12|13
12
1 <-- Remainder
1.00 <-- Remainder can be used to find decimal values
.96
.040
.036
.0040 <-- remainder of 4 starts repeating here, so the quotient is 1.083333...
13/12 = 1R1, ergo 13% 12 = 1.
ช่วยให้คิดว่าโมดูลัสเป็น "วัฏจักร"
ในคำอื่น ๆ สำหรับการแสดงออกn % 12
ผลจะเสมอเป็น <12
นั่นหมายความว่าลำดับของ set 0..100
for n % 12
คือ:
{0,1,2,3,4,5,6,7,8,9,10,11,0,1,2,3,4,5,6,7,8,9,10,11,0,[...],4}
ในสภาพแสงนั้นโมดูลัสรวมถึงการใช้งานจะชัดเจนขึ้นมาก
สิ่งที่สำคัญเท่านั้นที่จะเข้าใจได้ว่าโมดูลัส (แสดงที่นี่โดย% เหมือนใน C) หมายผ่านการแบ่งยุคลิด
สำหรับ(d, q)
จำนวนเต็มสองจำนวนใด ๆต่อไปนี้เป็นจริงเสมอ :
d = ( d / q ) * q + ( d % q )
อย่างที่คุณเห็นค่าd%q
ขึ้นอยู่กับค่าของ d/q
. โดยทั่วไปสำหรับจำนวนเต็มบวกd/q
จะถูกตัดทอนเป็นศูนย์เช่น 5/2 ให้ 2 ดังนั้น:
5 = (5/2)*2 + (5%2) => 5 = 2*2 + (5%2) => 5%2 = 1
อย่างไรก็ตามสำหรับจำนวนเต็มลบสถานการณ์จะไม่ชัดเจนและขึ้นอยู่กับภาษาและ / หรือมาตรฐาน ตัวอย่างเช่น -5/2 สามารถคืนค่า -2 (ถูกตัดทอนเป็นศูนย์เหมือนเดิม) แต่ยังสามารถคืนค่า -3 (ด้วยภาษาอื่น)
ในกรณีแรก:
-5 = (-5/2)*2 + (-5%2) => -5 = -2*2 + (-5%2) => -5%2 = -1
แต่ในอันที่สอง:
-5 = (-5/2)*2 + (-5%2) => -5 = -3*2 + (-5%2) => -5%2 = +1
ที่กล่าวก่อนเพียงจำคงที่ซึ่งเป็นส่วนยุคลิด
รายละเอียดเพิ่มเติม:
27% 16 = 11
คุณสามารถตีความได้ด้วยวิธีนี้:
16 ไป 1 คูณ 27 ก่อนผ่าน
16 * 2 = 32.
คุณก็บอกได้ว่า 16 ไปครั้งเดียวใน 27 โดยเหลือ 11
ในความเป็นจริง,
16 + 11 = 27
ตัวอย่างอื่น ๆ :
20% 3 = 2
ทีนี้ 3 ไป 6 คูณหาร 20 ก่อนผ่านไป
3 * 6 = 18
ในการบวกได้ถึง 20 เราต้องการ 2 ดังนั้นส่วนที่เหลือของนิพจน์โมดูลัสจึงเป็น 2
มันง่ายมากตัวดำเนินการโมดูลัส (%) จะคืนค่าส่วนที่เหลือหลังจากการหารจำนวนเต็ม ลองดูตัวอย่างคำถามของคุณ 27% 16 = 11 เท่าไหร่? เมื่อคุณหาร 27 ด้วย 16 เช่น (27/16) คุณจะได้เศษที่เหลือเป็น 11 และนั่นคือสาเหตุที่คำตอบของคุณคือ 11
เขียนตารางโดยเริ่มต้นด้วย 0
{0,1,2,3,4}
ต่อตารางเป็นแถว
{0,1,2,3,4}
{5,6,7,8,9}
{10,11,12,13,14}
ทุกอย่างในคอลัมน์แรกเป็นผลคูณของ 5 ทุกอย่างในคอลัมน์ 2 เป็นผลคูณของ 5 โดยมี 1 เป็นส่วนที่เหลือ ตอนนี้เป็นส่วนนามธรรม: คุณสามารถเขียนว่า (1) เป็น 1/5 หรือเป็นการขยายทศนิยม ตัวดำเนินการโมดูลัสจะส่งกลับเฉพาะคอลัมน์หรือในอีกวิธีหนึ่งในการคิดก็จะส่งกลับส่วนที่เหลือในการหารยาว คุณกำลังซื้อขายในโมดูโล (5) โมดูลัสที่แตกต่างกันตารางที่แตกต่างกัน ลองนึกถึงตารางแฮช
เมื่อเราหารจำนวนเต็มสองจำนวนเราจะได้สมการที่มีลักษณะดังต่อไปนี้:
A / B = Q ส่วนที่เหลือ R
A คือเงินปันผล B คือตัวหาร Q คือผลหารและ R คือเศษที่เหลือ
บางครั้งเราสนใจเฉพาะส่วนที่เหลือเมื่อเราหาร A ด้วย B สำหรับกรณีเหล่านี้มีตัวดำเนินการที่เรียกว่าตัวดำเนินการโมดูโล (ตัวย่อว่า mod)
ตัวอย่าง
16/5= 3 Remainder 1 i.e 16 Mod 5 is 1.
0/5= 0 Remainder 0 i.e 0 Mod 5 is 0.
-14/5= 3 Remainder 1 i.e. -14 Mod 5 is 1.
ดูบทความของ Khan Academyสำหรับข้อมูลเพิ่มเติม
ในวิทยาการคอมพิวเตอร์ตารางแฮชใช้ตัวดำเนินการ Mod เพื่อเก็บองค์ประกอบโดยที่ A จะเป็นค่าหลังจากการแฮช B จะเป็นขนาดตารางและ R คือจำนวนช่องหรือคีย์ที่ใส่องค์ประกอบ
ดูตารางแฮชทำงานอย่างไรสำหรับข้อมูลเพิ่มเติม
นี่เป็นแนวทางที่ดีที่สุดสำหรับฉันในการทำความเข้าใจตัวดำเนินการโมดูลัส ฉันจะอธิบายให้คุณฟังผ่านตัวอย่าง
16 % 3
เมื่อคุณหารสองจำนวนนี้ส่วนที่เหลือคือผลลัพธ์ นี่คือวิธีที่ฉันทำ
16 % 3 = 3 + 3 = 6; 6 + 3 = 9; 9 + 3 = 12; 12 + 3 = 15
สิ่งที่เหลือถึง 16 คือ 1
16 % 3 = 1
นี่คืออีกหนึ่งตัวอย่าง: 16 % 7 = 7 + 7 = 14
สิ่งที่เหลือถึง 16? คือ2
16 % 7 = 2
อีกหนึ่ง: 24 % 6 = 6 + 6 = 12; 12 + 6 = 18; 18 + 6 = 24
. เศษที่เหลือจึงเป็นศูนย์24 % 6 = 0