การหารเลขฐานสองสามารถแก้ไขได้โดยใช้วิธีการหารยาวซึ่งเป็นวิธีการที่สามารถสอนกระบวนการหารด้วยตัวเองได้เช่นเดียวกับการสร้างโปรแกรมคอมพิวเตอร์อย่างง่าย นอกจากนี้ วิธีการเสริมของการลบแบบวนซ้ำสามารถให้วิธีการที่คุณอาจไม่คุ้นเคย แม้ว่าจะไม่ได้ใช้กันทั่วไปในการเขียนโปรแกรมก็ตาม ภาษาเครื่องมักใช้อัลกอริธึมการประมาณเพื่อให้มีประสิทธิภาพมากขึ้น แต่ไม่ได้อธิบายไว้ในบทความนี้
ขั้นตอน
วิธีที่ 1 จาก 2: การใช้กองยาว
ขั้นตอนที่ 1 เรียนรู้การหารยาวทศนิยมอีกครั้ง
หากคุณไม่ได้ใช้การหารยาวในระบบเลขฐานสิบ (ฐานสิบ) แบบปกติมาเป็นเวลานาน ให้ทบทวนพื้นฐานโดยใช้โจทย์ตัวอย่าง 172 หารด้วย 4 มิฉะนั้น ให้ข้ามขั้นตอนนี้และไปยังขั้นตอนถัดไปเพื่อสำรวจ กระบวนการที่คล้ายกันกับเลขฐานสอง
- เศษ แบ่งโดย ตัวส่วน และผลที่ได้คือ ผลหาร.
- เปรียบเทียบตัวส่วนกับตัวเลขตัวแรกในตัวเศษ ถ้าตัวส่วนมากกว่า ให้เพิ่มตัวเลขไปยังตัวเศษต่อไปจนกว่าตัวส่วนจะเล็กลง (ตัวอย่างเช่น ถ้าเราคำนวณ 172 หารด้วย 4 เราเปรียบเทียบ 4 กับ 1 เรารู้ว่า 4 มากกว่า 1 ดังนั้นให้เปรียบเทียบ 4 กับ 17)
- เขียนตัวเลขตัวแรกของผลหารเหนือตัวเศษสุดท้ายที่ใช้ในการเปรียบเทียบ เมื่อเราเปรียบเทียบ 4 กับ 17 เราจะเห็นว่า 4 ครอบคลุม 17 สี่ครั้ง เราจึงเขียน 4 เป็นจำนวนแรกของผลหาร ที่สูงกว่า 7
- คูณและลบเพื่อให้ได้ส่วนที่เหลือ คูณผลหารด้วยตัวส่วน ซึ่งหมายความว่า 4 × 4 = 16 เขียน 16 ภายใต้ 17 แล้วลบ 17 ด้วย 16 เพื่อให้ได้เศษ ซึ่งก็คือ 1
- ทำซ้ำขั้นตอน เราเปรียบเทียบตัวส่วนอีกครั้งซึ่งก็คือ 4 กับตัวเลขถัดไปซึ่งก็คือ 1 สังเกตว่า 4 มากกว่า 1 แล้ว "ลบ" ตัวเลขถัดไปจากตัวเศษ ดำเนินการต่อโดยเปรียบเทียบ 4 กับ 12 เราจะเห็นว่า 4 ถูกครอบคลุมด้วย 12 สามครั้งโดยไม่มีเศษเหลือ เราจึงเขียน 3 เป็นจำนวนถัดไปของผลหาร คำตอบคือ 43
ขั้นตอนที่ 2 เตรียมปัญหาการหารยาวเป็นเลขฐานสอง
ลองเอา 10101 11. เขียนเป็นปัญหาสำหรับการหารยาว โดยใช้ 10101 เป็นตัวเศษ และ 11 เป็นตัวส่วน เว้นช่องว่างด้านบนไว้เป็นที่สำหรับเขียนผลหาร และด้านล่างเป็นที่สำหรับเขียนการคำนวณ
ขั้นตอนที่ 3 เปรียบเทียบตัวส่วนกับหลักแรกของตัวเศษ
มันทำงานแบบเดียวกับการหารยาวเป็นทศนิยม แต่จริงๆ แล้ว มันง่ายกว่ามากในระบบเลขฐานสอง ในไบนารี่ มีเพียงสองตัวเลือก คุณไม่สามารถหารตัวเลขด้วยตัวส่วน (ความหมาย 0) หรือตัวส่วนรวมเพียงครั้งเดียว (ความหมาย 1):
11 > 1 ดังนั้น 11 จึงไม่ "ครอบคลุม" 1. เขียนตัวเลข 0 เป็นตัวเลขแรกของผลหาร (เหนือหลักแรกของตัวเศษ)
ขั้นตอนที่ 4 ทำงานกับตัวเลขถัดไปและทำซ้ำจนกว่าคุณจะได้หมายเลข 1
ต่อไปนี้เป็นขั้นตอนต่อไปในตัวอย่างของเรา:
- รับหมายเลขถัดไปจากตัวเศษ 11 > 10. เขียน 0 ในผลหาร
- ลดจำนวนถัดไป 11 < 101. เขียนเลข 1 ในตัวหาร
ขั้นตอนที่ 5. ค้นหาส่วนที่เหลือของการหาร
เช่นเดียวกับทศนิยมหารยาว ให้คูณตัวเลขที่เราเพิ่งได้ (1) ด้วยตัวส่วน (11) แล้วเขียนผลลัพธ์ใต้ตัวเศษขนานกับตัวเลขที่เราเพิ่งคำนวณ ในระบบเลขฐานสอง เราสามารถสรุปกระบวนการนี้ได้ เนื่องจาก 1 x ตัวส่วนจะเหมือนกับตัวส่วนเสมอ:
- เขียนตัวส่วนใต้ตัวเศษ ในที่นี้ เขียน 11 ขนานกับสามหลักแรกของตัวเศษ (101)
- นับ 101 - 11 เพื่อรับส่วนที่เหลือของการหาร ซึ่งก็คือ 10 ดูวิธีลบเลขฐานสองหากคุณต้องการเรียนรู้ใหม่
ขั้นตอนที่ 6 ทำซ้ำจนกว่าปัญหาจะได้รับการแก้ไข
ลดจำนวนถัดไปจากตัวส่วนเหลือเศษของการหารเพื่อให้ได้ 100 ตั้งแต่ 11 < 100 ให้เขียน 1 เป็นตัวเลขถัดไปในการหาร ดำเนินการคำนวณเหมือนเดิม:
- เขียน 11 ภายใต้ 100 แล้วลบเพื่อให้ได้ 1
- ลดตัวเลขสุดท้ายของตัวเศษเป็น 11
- 11 = 11 ดังนั้นเขียน 1 เป็นตัวเลขสุดท้ายของผลหาร (คำตอบ)
- เนื่องจากไม่มีเศษเหลือ การคำนวณจึงสมบูรณ์ คำตอบคือ 00111 หรือ 111 เท่านั้น
ขั้นตอนที่ 7 เพิ่มคะแนนฐานถ้าจำเป็น
บางครั้ง ผลลัพธ์ของการคำนวณไม่ใช่จำนวนเต็ม หากคุณยังมีการหารเหลือหลังจากใช้หลักสุดท้ายแล้ว ให้เพิ่ม ".0" ในตัวเศษและ "" ให้กับผลหาร ดังนั้นคุณยังสามารถหาตัวเลขเพิ่มอีกตัวหนึ่งและทำการคำนวณต่อไปได้ ทำซ้ำจนกว่าจะได้ความแม่นยำที่ต้องการ จากนั้นปัดเศษผลลัพธ์ บนกระดาษ คุณสามารถปัดเศษลงได้โดยเอา 0 สุดท้ายออก หรือถ้าตัวสุดท้ายเป็น 1 ให้ทิ้งและเพิ่มตัวเลขล่าสุดเป็น 1 ในการเขียนโปรแกรม ให้ปฏิบัติตามอัลกอริธึมการปัดเศษมาตรฐานหลายแบบเพื่อหลีกเลี่ยงข้อผิดพลาดเมื่อแปลงเลขฐานสอง เป็นทศนิยมและในทางกลับกัน
- การหารเลขฐานสองมักส่งผลให้มีเศษส่วนซ้ำกัน บ่อยกว่ากระบวนการเดียวกันในระบบทศนิยม
- โดยทั่วไปเรียกว่า "จุดฐาน" ซึ่งใช้กับฐานใดๆ เนื่องจากคำว่า "จุดทศนิยม" ใช้เฉพาะในระบบทศนิยมเท่านั้น
วิธีที่ 2 จาก 2: การใช้วิธีการเสริม
ขั้นตอนที่ 1 เข้าใจแนวคิดพื้นฐาน
วิธีหนึ่งในการแก้ปัญหาการหาร – บนพื้นฐานใดๆ – คือการลบตัวส่วนออกจากตัวเศษ จากนั้นจึงเหลือเศษ โดยนับว่ากระบวนการนี้สามารถทำซ้ำได้กี่ครั้งก่อนที่จะได้จำนวนลบ ตัวอย่างต่อไปนี้เป็นการคำนวณในฐานสิบ คำนวณ 26 7:
- 26 - 7 = 19 (ลบ 1 ครั้ง)
- 19 - 7 = 12 (2)
- 12 - 7 = 5 (3)
- 5 - 7 = -2. ตัวเลขติดลบ ดังนั้นถอยกลับ ผลลัพธ์คือ 3 และเศษที่เหลือหารด้วย 5 โปรดทราบว่าวิธีนี้ไม่ได้คำนวณเศษส่วนของคำตอบ
ขั้นตอนที่ 2 เรียนรู้วิธีลบด้วยการเติมเต็ม
แม้ว่าคุณจะใช้วิธีข้างต้นในระบบเลขฐานสองอย่างง่ายดาย แต่เราสามารถลดการใช้วิธีการที่มีประสิทธิภาพมากขึ้นได้ ซึ่งจะช่วยประหยัดเวลาในการเขียนโปรแกรมคอมพิวเตอร์ให้ทำการหารเลขฐานสอง นี่คือการลบด้วยวิธีเสริมในไบนารี ต่อไปนี้เป็นข้อมูลพื้นฐานในการคำนวณ 111 - 011 (ตรวจสอบให้แน่ใจว่าตัวเลขทั้งสองมีความยาวเท่ากัน):
- หาส่วนเสริมของตัวเลขที่สองโดยลบแต่ละหลักออกจาก 1 ขั้นตอนนี้ทำได้ง่ายในระบบเลขฐานสองโดยเปลี่ยนทุกๆ 1 เป็น 0 และทุกๆ 0 เป็น 1 ในตัวอย่างนี้ 011 ถึง 100
- บวก 1 เข้ากับผลลัพธ์ของการคำนวณ: 100 + 1 = 101 ตัวเลขนี้เรียกว่าส่วนเติมเต็มของสอง ดังนั้นการลบสามารถแก้การบวกได้ โดยพื้นฐานแล้ว ผลลัพธ์ของการคำนวณนี้เหมือนกับว่าเราบวกตัวเลขติดลบและไม่ลบจำนวนบวกหลังจากกระบวนการนี้เสร็จสิ้น
- เพิ่มผลลัพธ์ให้กับตัวเลขแรก เขียนและแก้ปัญหาการบวก: 111 + 101 = 1100
- ลบตัวเลขเพิ่มเติม ลบตัวเลขแรกออกจากผลการคำนวณเพื่อให้ได้ผลลัพธ์สุดท้าย 1100 → 100.
ขั้นตอนที่ 3 รวมสองแนวคิดที่อธิบายไว้ข้างต้น
ตอนนี้คุณรู้วิธีการลบสำหรับการแก้ปัญหาการหารแล้ว เช่นเดียวกับวิธีการเสริมของทั้งสองสำหรับการแก้ปัญหาการลบ เมื่อใช้ขั้นตอนด้านล่าง คุณสามารถรวมทั้งสองวิธีเป็นหนึ่งวิธีในการแก้ปัญหาการหารได้ หากต้องการ ให้ลองแก้ไขด้วยตัวเองก่อนดำเนินการต่อ
ขั้นที่ 4. ลบตัวส่วนออกจากตัวเศษ บวกส่วนเติมเต็มของทั้งสอง
มาแก้ปัญหา 100011 000101 กัน ขั้นตอนแรกคือการแก้ปัญหา 100011 - 000101 โดยใช้วิธีการเสริมของทั้งสองเพื่อเปลี่ยนการคำนวณนี้เป็นผลรวม:
- ส่วนเติมเต็มสองของ 000101 = 111010 + 1 = 111011
- 100011 + 111011 = 1011110
- ลบตัวเลขส่วนเกิน → 011110
ขั้นตอนที่ 5. เพิ่ม 1 ให้กับผลลัพธ์ของการหาร
ในโปรแกรมคอมพิวเตอร์ นี่คือที่ที่คุณบวก 1 เข้ากับผลหาร บนกระดาษ ให้จดบันทึกที่มุมกระดาษเพื่อไม่ให้ไปปะปนกับงานอื่น เราลบได้ครั้งเดียว ดังนั้นผลลัพธ์ของการหารจึงเท่ากับ 1
ขั้นตอนที่ 6 ทำซ้ำขั้นตอนโดยลบตัวส่วนออกจากส่วนที่เหลือของการคำนวณ
ผลลัพธ์ของการคำนวณครั้งสุดท้ายของเราคือส่วนที่เหลือของการหารหลังจากที่ "ครอบคลุม" ตัวส่วนแล้วหนึ่งครั้ง ให้เพิ่มส่วนเสริมของตัวส่วนสองตัวในการทำซ้ำแต่ละครั้งและลบตัวเลขส่วนเกินออก เพิ่ม 1 ให้กับผลหารในการวนซ้ำแต่ละครั้ง ทำซ้ำจนกว่าคุณจะได้การคำนวณที่เหลือเท่ากับหรือน้อยกว่าตัวส่วน:
- 011110 + 111011 = 1011001 → 011001 (ผลหาร 1+1=10)
- 0110001 + 111011 = 1010100 → 010100 (ผลหาร 10+1=11)
- 010100 + 111011 = 1001111 → 001111 (11+1=100)
- 001111 + 111011 = 1001010 → 001010 (100+1=101)
- 001010 + 111011 = 10000101 → 0000101 (101+1=110)
- 0000101 + 111011 = 1000000 → 000000 (110+1=111)
- 0 น้อยกว่า 101 เราเลยหยุดตรงนี้ คำตอบของกระบวนการหารนี้คือ 111. ในขณะที่ส่วนที่เหลือของการหารเป็นผลสุดท้ายของกระบวนการลบ ในกรณีนี้คือ 0 (ไม่มีเศษเหลือ)
เคล็ดลับ
- คำแนะนำสำหรับการเพิ่ม (เพิ่ม 1) การลด (การลบ 1) หรือการลบออกจากสแต็ก (ป๊อปสแต็ก) ควรพิจารณาก่อนใช้เลขฐานสองในชุดคำสั่งเครื่อง
- วิธีการเสริมของทั้งสองสำหรับการลบจะไม่ทำงานหากตัวเลขมีจำนวนหลักต่างกัน ในการแก้ไขปัญหานี้ ให้เพิ่มศูนย์ที่จุดเริ่มต้นของตัวเลขสำหรับจำนวนที่น้อยกว่า
- ละเว้นตัวเลขติดลบในเลขฐานสองติดลบก่อนคำนวณ ยกเว้นเพื่อพิจารณาว่าคำตอบนั้นเป็นบวกหรือลบ