Overflow คืออะไร จะเกิดขึ้นเมื่อไหร่

สำหรับเครื่องคอมพิวเตอร์ หรือเครื่องคิดเลข ที่ใช้ในการคำนวณสิ่งหนึ่งที่ต้องคำนึงก็คือเรื่อง Overflow การเกิด Overflow ก็คือการล้นของข้อมูล เช่นในการบวก หรือลบเลข แล้วได้ผลลัพธ์ที่ผิด แล้วมันได้ผลลัพธืผิดได้อย่างไร ??
จะยกตัวอย่างการบวกลบเลข(แบบ 2’s compliment) (หรือ Sign Number)(Sign Number บิตซ้ายสุดเป็นตัวบอกว่าเป็นจำนวนเต็มบวก หรือจำนวนเต็มลบ ถ้าเป็น 0 จะหมายถึงจำนวนเต็มบวก ถ้าเป็น 1 ก็จะหมายถึงจำนวนเต็มลบ) ในการบวกลบเลขเมื่อเรามีบิตที่ใช้แทนข้อมูลมีจำกัด ตัวอย่างเช่น วงจรเรามี 4 บิต ดังนั้น จะสามารถแทนข้อมูลได้ตั้งแต่ -8 ไปถึง 7
-8 –> 1000
-7 –> 1001
.
.
7 –> 0111

ดังเช่น สำหรับ เลข 4 บิต

5 + 6 = 11

แต่ถ้าเราใช้ 4-bit computer ทำการบวกนี้

0101 + 0110 = 1011 ซึ่ง ตรงกับ -5 (MSB คือ sign bit) ซึ่งผิด

เพราะว่าผลบวก มันล้น (overflow) ไปใส่ sign bit.

ตารางข้างล่างนี้สรุป ว่า overflow จะเกิดเมื่อไร
เงื่อนไขการเกิด Overflow

จากตาราง จะเห็นว่า ถ้า A + B แล้ว ทั้ง A และ B เป็น บวก (เช่น A=5, B=6) ผลลัพธ์ที่ถูกต้อง ก็ต้องเป็นบวก (A+B = 11 > 0) ถ้าออกมาเป็นลบ แปลว่า เกิด overflow

อีก 3 แบบก็อธิบายแบบเดียวกัน

หรือ จะอธิบายเพิ่มเติม เพื่อให้เข้าใจง่ายๆ จากตาราง
ถ้า A และ B ทั้งคู่มากกว่าหรือเท่ากับ 0 ซึ่งเป็นไปไม่ได้แน่ถ้าบวกกันแล้วจะติดลบ แต่ผลลัพธ์ออกมาติดลบ แสดงว่ามันล้น อันนี้คือกรณีที่ 1

กรณีที่ 2 ก็คล้ายๆกัน ถ้า ถ้า A และ B ทั้งคู่น้อยกว่า 0 ซึ่งเป็นไปไม่ได้แน่ถ้าบวกกันแล้วจะได้ผลลัพธืเป็นค่าบวก แต่ผลลัพธ์ออกมาได้ค่ามากกว่าหรือเท่ากับ 0 แสดงว่ามันล้น

กรณีที่ 3 ก็อธิบายคล้ายๆกันอีกนั่นแหละ จากตาราง A >= 0 และ B < 0 ถ้า A - B จากเงื่อนไขเราจะพบว่า B < 0 (แสดงว่า B ติดลบ) ดังนั้น A - B --> A – (-B) –> A + B ซึ่งก็จะเหมือนกับกรณีที่ 1 เลย ถ้าได้ผลลััพธ์ติดลบ แสดงว่าเกิด Overflow แน่ๆ

กรณีสุดท้าย A – B และจากตาราง เราพบว่า A < 0 (ติดลบ) ดังนั้น A - B --> (-A) – B จากสมการ จำนวณเต็มลบทั้งคู่เลย ซึ่งเป็นไปไม่ได้ที่เมื่อคำนวณแล้ว ผลลัพธ์จะออกมาเป็นค่าบวก ดังนั้นถ้าคำนวณแล้วได้ค่าบวกแสดงว่าต้องเกิด Overflow ขึ้นแน่ๆ

3 Comments

Leave a Reply

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

This site uses Akismet to reduce spam. Learn how your comment data is processed.