Skip to main content

Một lượng tràn số nguyên là gì?

Tràn tràn số nguyên đề cập đến hiện tượng xảy ra trong một số loại dữ liệu máy tính nhất định trong đó các dấu hiệu của chúng chuyển từ dương sang âm hoặc ngược lại, khi chúng đạt đến các kết thúc của phạm vi áp dụng của chúng.Trong các phạm vi máy tính, các loại dữ liệu số nguyên có phạm vi tròn và khi chúng đạt đến một đầu của phạm vi, chúng ngay lập tức di chuyển sang đầu kia của phạm vi của chúng.Điều này còn được gọi là tràn số nguyên. Một số nguyên đã ký có thể chứa một loạt các giá trị từ -2

31

đến (2

31 ) - 1. Số nguyên này không thể có giá trị (-2 31 ) - 1;Thay vào đó, số tiếp theo, nó tăng lên ở đầu kia của phạm vi của nó: (2 31 - 1).Sự thay đổi từ tiêu cực sang dương ở cuối phạm vi của nó là một ví dụ về tràn số nguyên.Theo cùng một mã thông báo, một số nguyên không thể có giá trị là 2 31;Thay vào đó, giá trị này sẽ chuyển sang đầu kia của phạm vi của nó và trở thành -2 31 Một mảng chỉ có thể có nhiều chỉ số trong đó vì loại số nguyên cho phép và các chỉ số âm không được tính.Nếu một lập trình viên cố gắng tạo một mảng lớn hơn loại số nguyên cho phép, các lỗi bộ nhớ đáng kể có thể xảy ra do tràn số nguyên sẽ dẫn đến chỉ số âm.Điều này đặc biệt nguy hiểm trong các ngôn ngữ không có giới hạn rõ ràng khi kiểm tra các mảng, như C ++. Khi xảy ra tràn số nguyên, các loại tràn liên quan như tràn bộ đệm, tràn đống và tràn bộ đệm ngăn xếp.Trong tất cả các trường hợp này, tràn số nguyên hoạt động với các cấu trúc bộ nhớ áp đảo với nhiều dữ liệu hơn các cấu trúc đó có thể hình dung được.Những tràn này, trong các chương trình đơn giản, thường không làm nhiều hơn là gây ra lỗi ghi không hợp lệ hoặc không hợp lệ.Tuy nhiên, thao tác với vấn đề này bởi tin tặc có thể thiết kế các lỗi bộ nhớ có thể gây ra vấn đề nghiêm trọng hơn. Trong hầu hết các chương trình đơn giản, tràn số nguyên không phải là vấn đề lớn.Các giới hạn của loại số nguyên đủ lớn để vấn đề tràn không xuất hiện trừ khi có nhiều dữ liệu được xử lý cùng một lúc.Trong một số trường hợp, tràn có thể được giảm thiểu, như trong trường hợp tăng bộ đếm, bằng cách sử dụng một loại dữ liệu lớn hơn với phạm vi lớn hơn.Về mặt lý thuyết, kiểu dữ liệu lớn hơn có thể gặp phải vấn đề tràn tương tự, nhưng khi các loại dữ liệu trở nên lớn hơn, cơ hội làm như vậy sẽ nhỏ hơn.Mỗi phạm vi loại dữ liệu số nguyên có kích thước ít nhất gấp đôi so với nhỏ nhất tiếp theo, do đó có nhiều chỗ cho dữ liệu bổ sung.