Các loại dấu phẩy động (như Đơn và Đôi) được biểu thị trong bộ nhớ bằng một dấu hiệu, một lớp phủ và số mũ. Hãy nghĩ về nó như một ký hiệu khoa học:
Sign*Mantissa*Base^Exponent
Họ - như bạn có thể mong đợi - sử dụng cơ sở 2. Có một số điều chỉnh khác cho phép biểu thị vô cực và NaN, và số mũ được bù (sẽ quay trở lại đó) và một tốc ký cho mantissa (cũng sẽ trở lại với điều đó) . Hãy tìm tiêu chuẩn IEEE 754 bao gồm các đại diện và hoạt động của nó để biết thêm chi tiết.
Đối với mục đích của chúng tôi, chúng tôi có thể tưởng tượng nó như là một số nhị phân "mantissa" và "số mũ" cho bạn biết nơi đặt dấu tách thập phân.
Trong trường hợp Độc thân, chúng tôi có 1 bit cho anh ta ký, 8 cho số mũ và 23 cho số mũ.
Bây giờ, điều là, chúng tôi sẽ lưu trữ bọ ngựa từ chữ số có ý nghĩa nhất. Hãy nhớ rằng tất cả các số 0 ở bên trái không liên quan. Và cho rằng chúng tôi đang làm việc trong hệ nhị phân, chúng tôi biết rằng chữ số có ý nghĩa nhất là 1 ※. Chà, vì chúng tôi biết điều đó, chúng tôi không phải lưu trữ nó. Nhờ tốc ký đó, phạm vi hiệu quả của lớp phủ là 24 bit.
※: Trừ khi số lượng chúng tôi đang lưu trữ bằng không. Cho rằng chúng ta sẽ có tất cả các bit được đặt thành không. Tuy nhiên, nếu chúng tôi cố gắng diễn giải rằng theo mô tả mà tôi đã đưa ra, bạn sẽ có 2 ^ 24 (ẩn 1) nhân với 1 (2 với sức mạnh của số mũ 0). Vì vậy, để khắc phục nó, số mũ là một giá trị đặc biệt. Ngoài ra còn có các giá trị đặc biệt để lưu trữ vô cực và NaN theo số mũ.
Theo phần bù lũy thừa - ngoài việc tránh các giá trị đặc biệt - có phần bù cho phép đặt dấu thập phân trước khi bắt đầu lớp phủ hoặc sau khi kết thúc, mà không cần phải có dấu cho số mũ.
Điều này có nghĩa là đối với số lượng lớn, loại dấu phẩy động sẽ đặt dấu thập phân vượt quá điểm cuối của lớp phủ.
Hãy nhớ rằng mantissa là một số 24 bit. Nó sẽ không bao giờ đại diện cho một số 25 bit ... nó không có thêm bit đó. Do đó, đơn không thể phân biệt giữa 2 ^ 24 và 2 ^ 24 + 1 (đây là các số 25 bit đầu tiên và chúng khác nhau ở bit cuối cùng, không được biểu thị trong đơn).
Do đó, đối với số nguyên, phạm vi của đơn là -2 ^ 24 đến 2 ^ 24. Và cố gắng thêm 1 đến 2 ^ 24 sẽ cho kết quả là 2 ^ 24 (vì theo như loại có liên quan, 2 ^ 24 và 2 ^ 24 + 1 là cùng một giá trị). Hãy thử trực tuyến . Đây là lý do tại sao có sự mất thông tin khi chuyển đổi từ số nguyên sang đơn. Và đây cũng là lý do tại sao một vòng lặp sử dụng một hoặc hai lần thực sự có thể là một vòng lặp vô hạn mà bạn không nhận ra.