Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

Binary Number System - Overflow ใน Arithmetic Addition ใน C/C++


2's Complement Number System ใช้กันอย่างแพร่หลายใน computer architecture

N-bit 2's Complement number System สามารถแทนตัวเลขจาก -2^(n-1) ถึง 2^(n-1)-1

4 Bit แทนได้ -8 ถึง 7

5 Bit แทนได้ -16 ถึง 15 ใน 2's Complement System

Overflow เกิดขึ้นเวลา addition เมื่อ 2 N-bit 2's Complement Numbers ถูกบวกกัน และผลลัพธ์ใหญ่เกินไปที่จะใส่ใน N-bit Group นั้น

คอมพิวเตอร์มี N-Bit Fixed registers ผลลัพธ์การบวก 2 N-Bit Numbers จะได้สูงสุด N+1 Bit number

Carry Flag เก็บ Extra Bit นั้น แต่ Carry ไม่ได้หมายถึง overflow เสมอไป

Overflow Detection

Overflow เกิดเมื่อ −

  • ผลบวกของ 2 ตัวเลขลบเป็นบวก หรือ

  • ผลบวกของ 2 ตัวเลขบวกเป็นลบ

ดังนั้น overflow สามารถตรวจจับได้โดยตรวจสอบ Most Significant Bit (MSB) ของ operands 2 ตัวและ result แทนที่จะใช้ 3-bit Comparator สามารถตรวจจับ overflow ได้ด้วย 2 Bit Comparator โดยตรวจสอบ Carry-in และ Carry-Out จาก MSB's เราพิจารณา N-Bit addition ของ 2's Complement number

Binary Number System - Overflow ใน Arithmetic Addition ใน C/C++


Overflow เกิดเมื่อ Carry-in ไม่เท่ากับ Carry-out สมการ overflow ข้างต้นสามารถอภิปรายได้จาก analysis ด้านล่าง

Binary Number System - Overflow ใน Arithmetic Addition ใน C/C++


ใน Figure แรก MSB ของ 2 ตัวเลขเป็น 0 แสดงว่าเป็นบวก ถ้า Carry-in เป็น 1 จะได้ MSB ของผลลัพธ์เป็น 1 แสดงว่าผลลัพธ์เป็นลบ (Overflow) และ Carry-out เป็น 0 Carry-in != Carry-out ดังนั้น overflow

ใน Figure ที่สอง MSB ของ 2 ตัวเลขเป็น 1 แสดงว่าเป็นลบ ถ้า Carry-in เป็น 0 จะได้ MSB ของผลลัพธ์เป็น 0 แสดงว่าผลลัพธ์เป็นบวก (Overflow) และ Carry-out เป็น 1 Carry-in != Carry-out ดังนั้น overflow

ดังนั้น Carry-in และ Carry-out ที่ MSB's เพียงพอที่จะตรวจจับ Overflow

Binary Number System - Overflow ใน Arithmetic Addition ใน C/C++


XOR Gate ด้านบนสามารถนำไปใช้ตรวจจับ overflow ได้