next up previous contents index
Next: เลขทศนิยม (Floating Point) Up: การหาร Previous: ศัพท์ภาษาคณิตศาสตร์ที่เราไม่ค่อยคุ้นเคย   Contents   Index

ตัวอย่างการหาร

จงหาร $7_{ten}$ ด้วย $2_{ten}$ หรือ $0000 0111_{two}$ ด้วย $0000 0010_{two}$

รูป 3.11 แสดงค่าในรีจีสเตอร์ต่างๆ ในแต่ละขั้นตอนของการคำนวณ โดยได้ผลการหารเท่ากับ 3 เหลือเศษ 1 โดยในขั้นตอนจะมีเท่ากับ $n+1$ ขั้นตอนในการหาร ในขั้นตอนการตรวจสอบค่ามากกว่าหรือน้อยกว่าศูนย์จะทดสอบเพียงค่าของ Sign bit เท่านั้น

Figure 3.11: ตัวอย่างการหารตามระเบียบวิธี ในรูป 3.10
\begin{figure}\centering
\begin{tabular}{@{}clccc@{}}\toprule
Iteration & Step &...
...iv right & 0011 & 0000 0001 & 0000 0001 \bottomrule
\end{tabular}
\end{figure}

วิธีการหารที่ได้กล่าวมาขั้นต้นสามารถปรับปรุงให้ทำงานได้เร็วขึ้นและมีฮาร์ดแวร์ที่ถูกลง ความเร็วในการคำนวณที่เพิ่มชึ้นได้มาจากเราทำการ shift ตัวตั้งหารและผลลัพธ์ ในเวลาเดียวกับการลบค่า โดยสามารถลดจำนวนรีจีสเตอร์จากการใช้งานพื้นที่ของรีจีสเตอร์ที่ยังไม่ได้มีการใช้งาน รูป 3.12 แสดงฮาร์ดแวร์ที่ทำการปรับปรุง

การหารแบบมีเครื่องหมายทำโดยการบันทึกเครื่องหมายของตัวหาร และตัวตั้งหารจากนั้นทำการเปลี่ยนเครื่องหมายของผลลัพธ์ในกรณีที่เครื่องหมายไม่ตรงกัน

Figure 3.12: ฮาร์ดแวร์สำหรับการหารที่ได้รับการปรับปรุง
\includegraphics[width=4.5in]{fig/Chapter_3/Figure_3.13.eps}

ในคอมพิวเตอร์ MIPS นั้นมีคำสั่งสำหรับการหารได้แก่ divide (div) และ divide unsigned (divu) คำสั่ง (mflo) และ (mfhi) สามารถใช้ในการนำผลลัพธ์ของการหารมาใส่ไว้ในรีจีสเตอร์ของ MIPS (ที่มี 32 ตัว) ตามที่ต้องการ



Vara Varavithya 2006-11-06