Trang chủ

Bí mật Toán học

Tại sao máy tính bị “tràn” dữ liệu trong tính toán?

Chúng ta đều biết “tràn” là hình dung từ th dùng để hình dung chất lỏng trong vật chứa bị chảy ra ngoài khi đầy, ví dụ nước trong cốc đổ đầy quá, sẽ bị chảy tràn ra ngoài qua thành cốc. Trong máy tính, cũng có chuyện “tràn” như vậy, nó chỉ sự “tràn” dữ liệu trong tính toán. Vậy tại sao máy tính lại bị tràn?

Thì ra, phạm vi số mà máy tính có thể biểu thị là có hạn. Nếu số quá to hoặc quá nhỏ vượt quá phạm vi biểu thị này, thì gọi là tràn dữ liệu. Thiết bị tính toán giống như cái cốc, số giống như nước trong cốc, khi số cho vào trong cốc không chứa hết, nó sẽ chảy ra một phần. Phần bị chảy ra sẽ bị mất đi khiến kết quả tính toán không chính xác, từ đó có thể ảnh hưởng đến các quá trình tính toán sau, vấn đề sẽ trở nên nghiêm trọng, không đơn giản như chuyện nước chảy ra từ cốc. Vì vậy máy tính khi tính toán nhất định phải tránh để tràn dữ liệu.

Ví dụ một thiết bị tính toán có dung lượng chỉ 8 đơn vị, một số thuộc hệ số nhị phân có 8 đơn vị, mỗi một đơn vị có thể là 0 hoặc 1; trong khi đơn vị bên trái nhất là đơn vị ký hiệu, tức là ký hiệu

Vậy thì giá trị lớn nhất của số được biểu thị bằng bẩy vị trí còn lại là 2 x 2 x 2 x 2 x 2 x 2 x 2 = 27. Lại xem xét đến vấn đề âm hay dương của đơn vị ký hiệu, ta sẽ có phạm vi biểu thị số của thiết bị tính toán 8 đơn vị này sẽ là -27 đến 27 - 1, tức là từ -128 đến 127.

Khi kết quả tính toán vượt quá phạm vi này, hiện tượng tràn dữ liệu sẽ xảy ra, ví dụ số 129 trong máy được biểu thị là 1000001, mà số 1 của vị trí bên trái nhất là đơn vị ký hiệu, 1 chỉ số âm, vậy là số này sẽ là -1, chứ không phải là 129, bạn xem, khoảng cách sai số quá lớn!

Theo sự phát triển của khoa học máy tính, máy tính ngày này đều là 16 hoặc 32 bít, phạm vi biểu thị số nâng cất lớn từ đó đảm bảo cho các phép toán thông thường không xảy ra sự cố tràn dữ liệu.

Nhưng, nếu xảy ra sự cố tràn dữ liệu thì nên làm thế nào? Trước tiên yêu cầu ngừng máy, sau đó kiểm tra để tìm ra nguyên nhân bị tràn ra. Khi máy tính tính toán, nhất là khi cộng hai số cùng âm hoặc cùng là dương, phải phán đoán kết quả tính toán có phải gây ra sự cố tràn dữ liệu, nếu phát hiện dữ liệu bị tràn, phải xử lí mới có thể đảm bảo tính chính xác của quá trình tính toán tiếp theo.

Bởi vậy, chúng ta khi sử dụng máy tính, cần đọc trước thông tin về máy, xem xem phạm vi tính toán của nó là bao nhiêu bít, để tránh trong khi tính toán nảy sinh sự cố tràn dữ liệu.

Bình luận