CodeQuiz EP.25 - คอมฯ บวกลบทศนิยมยังไง?
พี่ชีต้าร์ สุทธิทัต
เผยแพร่เมื่อ
อัปเดตล่าสุดเมื่อ

สาระสำคัญ
- ทบทวน IEEE754 และการบวกเลขฐาน 2
- วิธีการบวกลบเลขของ IEEE754
- สรุปวิธีการบวกลบเลข IEEE754 สั้นๆ
IEEE754 คืออะไร?

จาก EP.23 เรารู้ว่า เลขทศนิยมในคอมพิวเตอร์ เก็บโดยใช้หลักการเก็บเลขทศนิยม IEEE754 ซึ่งเราเก็บ 3 อย่างด้วยกันได้แก่
- sign (เลขเป็นบวกหรือลบ)
- exponent (เลขชี้กำลัง)
- fraction (เลขนัยสําคัญ)
ถ้าหากใครอยากรู้วิธีการเก็บเลขทศนิยมในคอมพิวเตอร์แบบละเอียด สามารถย้อนกลับไปอ่าน EP.23 ได้ที่นี่นะ
คอมพิวเตอร์บวกลบเลขทศนิยมฐาน 2 ยังไง?

ถ้าหากเราจำวิธีการบวกเลขฐาน 2 จาก EP.20 ไม่ได้ พี่จะสรุปสั้นๆให้
เราจะเริ่มจากหลักท้ายสุด ไปหลักหน้าสุด คล้ายๆกับที่เราบวกเลขฐาน 10 เลย
หลักการบวกของเราคือ
- 0 + 0 = 0
- 0 + 1 = 1
- 1 + 0 = 1
- 1 + 1 = 10 หรือง่ายๆคือ เราทดเลข 1 ไว้ในหลักถัดไปนั่นเอง

ส่วนการลบก็จะทำเหมือนกัน โดยมีหลักการคือ
- 0 - 0 = 0
- 0 - 1 = -1 โดยเราสามารถยืมเลขจากหลังด้านหน้าได้เหมือนกับการลบเลขฐาน 10 เลย
- 1 - 0 = 1
- 1 - 1 = 0
แล้ว IEEE754 เขาบวกลบกันยังไง 🤔
เราต้องเข้าใจก่อนว่า เวลาคอมพิวเตอร์บวกเลข คอมพิวเตอร์จะเรียนข้อมูลนั้นมาเก็บไว้ใน processer (ปกติเราจะรู้จักกันในชื่อ CPU) หลังจากนั้นจึงทำการบวกลบเลขกัน แล้วจึงนำค่าที่ได้ไปเก็บไว้
เนื่องจาก IEEE754 จะเก็บเลขทศนิยมในรูปแบบเลขสัญกรณ์วิทยาศาสตร์ หลายคนอาจคิดว่า วิธีที่ง่ายที่สุด คือเราแปลง IEEE754 ให้เป็นเลขฐาน 2 ตรงๆ แล้วนำมาบวกกัน แต่เขาใช้วิธีที่ง่ายกว่านั้น ซึ่งเราจะต้องมาเข้าใจคณิตศาสตร์ข้างหลังของวิธีการบวกของ IEEE754 กันก่อน

ถ้าหากเราจำสมบัติการแจกแจงที่เราเรียนกันสมัยประถมได้ ซึ่งบอกว่า a(b ± c) = ab ± ac

เรามาดูเคสที่ง่ายๆกันก่อน นั่นคือ เลขชี้กำลัง (exponent) ของทั้งสองตัวเลขเท่ากัน, เราจะสามารถดึง 2^(exponent) ออกมาได้ด้วยสมบัติการแจกแจง พอเป็นแบบนี้ สิ่งที่เราต้องทำก็มีแค่นำตัวเลขในวงเล็บ 2 ตัวมาบวกลบกัน

แต่หลายๆคนอาจสงสัยว่า แล้วถ้าเป็นกรณีที่เลขชี้กำลังไม่เท่ากันล่ะ จะบวกลบกันอย่างไร
ซึ่งวิธีการที่คอมพิวเตอร์ใช้นั่นก็คือ ปรับให้ตัวเลขที่เลขชี้กำลังน้อยกว่า ให้มีเลขชี้กำลังเท่ากัน เช่น 1.1 × 2² + 1.01 × 2³
เราจะแปลง 1.1 × 2² ให้มีเลขชี้กำลังเท่ากับเลขอีกตัว โดยทุกครั้งที่เราเพิ่มเลขชี้กำลังไป 1 เราจะขยับตัวเลขไปทางด้านขวา 1 หลัก หรือก็คือ 1.1 × 2² → 0.11 × 2³ นั่นเอง
หลังจากที่เราลวกลบเลขแล้ว เราจะจัดรูปให้อยู่ในรูปที่ตรงตามหลัก IEEE754 แล้วจึงเก็บไว้ในคอมพิวเตอร์

สรุปแล้ว หลักการในการบวกลบเลข IEEE754 ของคอมพิวเตอร์ก็คือ
- ปรับเลขชี้กำลังให้เท่ากัน โดยปรับให้เลขที่เลขชี้กำลังน้อยที่สุด มีเลขชี้กำลังเท่ากับเลขอีกตัวนึง
- บวกลบเลขนัยสำคัญเข้าด้วยกัน
- จัดรูปในอยู่ในรูปที่ IEEE754 เก็บได้
- แปลงเป็น IEEE754
เรามาดูตัวอย่างกันดีกว่า

ถ้าเรามี IEEE754 single precision อยู่ 2 ตัว a, b แล้วเราอยากรู้ค่าของ a - b โดยที่
- a = 0 01111110 10000000000000000000000
- b = 0 01111111 10000000000000000000000
ถ้าน้องๆลองแปลงเป็นเลขฐาน 10 เราจะได้ว่า a = 0.75 และ b = 1.5

เราจะแปลงทั้งคู่เป็นรูปแบบที่คอมพิวเตอร์เข้าใจ นั้นคือ
- a = 1.1 × 2^(-1)
- b = 1.1 × 2⁰
เราจะเห็นว่าเลขชี้กำลังไม่เท่ากัน โดยที่เลยชี้กำลังของ b มีค่ามากกว่ากว่า เราเลยมาแก้ a ให้เป็น
- a = 0.11 × 2⁰

ตอนนี้เลขชี้กำลังเท่ากันแล้ว เรามาลบทั้งคู่กันเลยดีกว่า
a - b = (0.11 - 1.1) × 2⁰
เราจะได้
a - b = -0.11 × 2⁰
เมื่อจัดรูปจะได้
a - b = -1.1 × 2^(-1)

เมื่อแปลงเป็นเลข IEEE754 ว่า
a - b = 1 01111110 10000000000000000000000
หรือก็คือ -0.75 นั่นเอง
สรุป
IEEE754 เวลาบวกหรือลบกัน จะใช้วิธีการขยับให้ตัวเลขชี้กำลังของตัวที่น้อยกว่า ไปเท่ากับตัวที่มากกว่า แล้วจึงนำมาบวกลบกัน แล้วแปลงให้เป็นค่าที่จัดเก็บในรูป IEEE754 ได้ แล้วจึงเก็บในคอมพิวเตอร์นั่นเอง