ล้นจำนวนเต็มคืออะไร?

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

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

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

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

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