Số dấu phẩy động: nó là gì? Giải thích đơn giản với các ví dụ
Trong mẹo thực tế này, chúng tôi cho bạn thấy số dấu phẩy động là gì và nó khác với số điểm cố định như thế nào.
Số dấu phẩy động: nó là gì?
Trong khoa học máy tính, số dấu phẩy động thường được sử dụng để đo các thiết bị được cho là hoạt động với độ chính xác nhất định.
- Số dấu phẩy động (hoặc "số dấu phẩy động") là một đại diện của một số sử dụng ký hiệu số mũ. Trong trường hợp đặc biệt, điều này chỉ hoạt động khoảng. Bạn cũng có thể biểu thị số 1230000 với số 1.23 10⁶.
- 1.23 được gọi là "Thần chú". Số 10 là "cơ sở" và số 6 là "số mũ". Ngẫu nhiên, một dấu hiệu cũng có thể được thêm vào lớp phủ. Tuy nhiên, bạn cũng có thể áp dụng toàn bộ cho hệ thống kép. Bạn cũng có thể biểu thị số 10101100 với số 1.0101100 2⁷. Máy tính chỉ lưu trữ các dấu hiệu, mantissa và số mũ.
- Máy tính thường di chuyển dấu phẩy qua lại cho đến khi chỉ có dấu 1 ở phía trước dấu phẩy. Sau đó, PC chỉ phải lưu các số thập phân của lớp phủ và số mũ.
- Vì vậy, số mũ có thể được lưu dưới dạng số dương, số cố định, cái gọi là thiên vị, được thêm vào. Số mũ nhỏ nhất có thể có của vị trí trước dấu thập phân (- độ lệch) được lưu là 0.
- Ngược lại với số điểm cố định, dấu phẩy không ở điểm cố định trong số dấu phẩy động.
Half, Float & Double - Mã hóa phổ biến của số dấu phẩy động
Bạn chắc chắn đã vấp phải ba điều khoản này, đặc biệt là khi lập trình với Arduino. Đây là những đại diện được tiêu chuẩn hóa.
- Kiểu dữ liệu "một nửa" là số 16 bit. Bit ngoài cùng bên trái chịu trách nhiệm cho dấu hiệu. Số mũ có 5 bit và mantissa 10. Độ lệch được sử dụng là 15. Vì bit đầu tiên của mantissa là (gần như) luôn là 1, nên điều này không được lưu.
- Kiểu dữ liệu "float" (hoặc "single") là một số 32 bit. Ở đây cũng vậy, một chút được sử dụng cho dấu hiệu. Tuy nhiên, số mũ có 8 bit (bias = 127) và mantissa 23.
- Kiểu dữ liệu "nhân đôi" cũng sử dụng một chút cho dấu hiệu. Tuy nhiên, ở đây, số mũ có 11 bit (bias = 1023) và mantissa thậm chí là 52 bit. Tổng cộng, đây là 64 bit, tức là 8 byte.
- Ngoài ba loại dữ liệu phổ biến này, còn có nhiều loại khác. Tuy nhiên, những thứ này hầu hết không được sử dụng vì độ chính xác của một nửa, float và double đã đủ tốt.
Chuyển đổi số thập phân thành số dấu phẩy động - cách thức hoạt động
Cuối cùng, chúng tôi muốn chỉ cho bạn cách bạn có thể chuyển đổi một số thập phân bình thường thành số dấu phẩy động.
- Trong ví dụ này, chúng tôi sử dụng số thập phân 18.4. Số trước dấu thập phân trước tiên được chuyển sang hệ thống kép. Kết quả là, bạn sẽ nhận được (10010).
- Sau đó, bạn phải chuyển đổi 0, 4. Đầu tiên nhân 0, 4 với 2. Bạn nhận được 0, 8 là kết quả. Ghi lại số trước dấu phẩy. Trong trường hợp này là 0. Sau đó nhân 0, 8 với 2. Lần này bạn nhận được 1, 6 là kết quả. Ghi lại số 1 và tiếp tục tính toán với 0, 6. Sau một thời gian, bạn sẽ thấy rằng mô hình lặp lại chính nó (trong ví dụ này). Cuối cùng, viết tất cả các số từ trên xuống dưới: 011001100110 ...
- Sau đó cộng các số lại với nhau: Đồng thời thêm (⋅ 2⁰) để bạn nhận được 10010, 01100110 ... 2⁰. Sau đó di chuyển dấu phẩy cho đến khi chỉ còn 1 trước dấu thập phân và cũng thay đổi công suất một cách thích hợp. Kết quả là bạn sẽ nhận được 1, 001001100110 ... 2⁴, vì bạn đã di chuyển dấu thập phân 4 vị trí sang trái. Bước này cũng được gọi là "bình thường hóa".
- Trong ví dụ này, chúng tôi sử dụng kiểu dữ liệu "float". Vì vậy, thêm giá trị thiên vị thích hợp cho số mũ của bạn. Bạn cũng phải chuyển đổi kết quả của phép tính 4 + 127 = 131 thành số nhị phân. Số 131 là số 10000011 trong hệ thống kép.
- Bây giờ bạn có thể viết ra số dấu phẩy động đã hoàn thành. Đầu tiên viết bit cho dấu hiệu. Vì nó là số dương nên bit đầu tiên là 0. Sau đó, bạn phải viết 131. Toàn bộ điều này hoàn toàn phù hợp trong trường hợp này, vì số này yêu cầu 8 bit và 8 bit có sẵn cho một float. Cuối cùng, bạn phải ghi lại 23 bit đầu tiên của lớp phủ, vì lớp phủ có 23 bit có sẵn cho một float.
- Do đó, số dấu phẩy động đã hoàn thành của bạn phải là số 01000001100100110011001100110011. Rõ ràng hơn một chút là số 0 | 10000011 | 00100110011001100110011.
Chuyển đổi số dấu phẩy động thành số thập phân - Đây là cách
Cuối cùng, chúng tôi muốn chỉ cho bạn cách bạn có thể chuyển đổi số dấu phẩy động thành số thập phân một lần nữa. Đối với điều này, chúng tôi lấy số 1000001100100110011001100110011.
- Đầu tiên điền số (phía trước) bằng số 0 cho đến khi bạn nhận được số 16, 32 hoặc 64 bit. Trong trường hợp này là 01000001100100110011001100110011.
- Chữ số đầu tiên là viết tắt của dấu hiệu. Vì vậy, số của chúng tôi là tích cực.
- Sau đó viết tiếp theo (trong trường hợp này) 8 chữ số và trừ đi độ lệch. (10000011) = 131 → 131 - 127 = 4 → Vì vậy, có "⋅ 2⁴" ở phía sau.
- Bây giờ hãy viết "1, " và sau đó tất cả các số còn lại, cũng như "⋅ 2⁴": 1.00100110011001100110011 2⁴
- Sau đó di chuyển dấu phẩy 4 vị trí sang phải để bạn có thể bỏ qua "⋅ 2⁴": 10010.0110011001100110011
- Tiếp theo, chuyển đổi 10010 thành một số nguyên như bình thường. Bạn nhận được 18.
- Bây giờ bạn phải chuyển đổi các vị trí thập phân. Chữ số đầu tiên sau dấu phẩy có giá trị 1: 2¹, chữ số thứ hai 1: 2², v.v. Thêm các giá trị và số trước dấu phẩy cung cấp cho bạn số 18.3999996185302734375.
Trong mẹo thực tế tiếp theo, chúng tôi sẽ chỉ cho bạn cách bạn có thể chuyển đổi các chữ cái ASCII thành số nhị phân.