Facebook Article  บทความ Facebook   C++ Article  บทความ C , C++   Android Article  บทความ Android   PHP SQL Article  บทความ PHP   Games Article  บทความ Games  

filezilla Article  บทความ Filezilla 

Youtube icon  Video 

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

Posted by Pongpat Janthai on กันยายน 17, 2012 – 1:02 pm

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 Responds so far- Add one»

  1. 1. itwithlife.com Said:

    เป็นประโยชน์มากๆ เลยครับ ทำข้อสอบได้ด้วย

  2. 2. Pongpat Janthai Said:

    เม้นบนมีการใส่ลายเซ็นด้วยนะครับ อิอิอิ

  3. 3. www.gamespczone.com Said:

    ขอบคุณครับ

แสดงความคิดเห็น (กรุณาใส่ ชื่อ,อีเมล ให้ถูกต้อง)

*

*



เรื่องอื่นๆที่น่าสนใจ


ติดตั้ง SSL Certification บน Linux Apache ของเรา
macro excel 2003 รันใน excel 2010 ไม่ได้
วิธีแก้ไข เมื่อ macro excel 2003 รันใน excel 2010 ไม่ได้

Google friendconnect

About

Pongpat Janthaiพงษ์พัฒน์ จันทร์ไทย
COE#18 วิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยขอนแก่น
"มุมเล็กๆ ของเด็กวิศวะฯ"

Tabs Switcher

คลังเก็บ

Archives

Meta