Номер с плаваща запетая: какво е това? Просто обяснено с примери
Свързани Видеоклипове: (Може 2024).
В този практичен съвет ви показваме какво е число с плаваща запетая и как се различава от число с фиксирана точка.
Номер с плаваща запетая: какво е това?
В информатиката номерът с плаваща запетая често се използва за измервателни устройства, за които се предполага, че работят с определена точност.
- Номер с плаваща запетая (или "номер с плаваща запетая") е представяне на число, използващо експоненциална нотация. В изключителни случаи това работи само приблизително. Можете също да представите число 1230000 с числото 1.23 ⋅ 10⁶.
- 1, 23 се нарича "Mantissa". 10 е "базата", а 6 е "показател". Между другото, към мантисата може да се добави и знак. Можете обаче да приложите цялото нещо към двойната система. Можете също да представите числото 10101100 с числото 1.0101100 ⋅ 2⁷. Компютърът съхранява само знака, мантисата и експонента.
- Компютрите обикновено преместват запетаята напред и назад, докато има само 1 пред запетаята. Тогава компютърът трябва само да запише десетичните знаци на мантисата и експонента.
- За да може експонентът да бъде запазен като положително число, се добавя фиксирано число, така нареченото отклонение. Най-малкият възможен показател на мястото преди десетичната запетая (- отклонение) се записва като 0.
- За разлика от номера с фиксирана точка, запетаята не е във фиксирана точка в число с плаваща запетая.
Half, Float & Double - общо кодиране на числа с плаваща запетая
Със сигурност сте се натъкнали на тези три термина, особено при програмиране с Arduino. Това са стандартизирани представителства.
- Типът данни "половина" е 16-битово число. Най-левият бит е отговорен за знака. Експонентът има 5 бита, а мантисата 10. Използваното отклонение е 15. Тъй като първият бит на мантисата е (почти) винаги 1, това не се запазва.
- Типът "поплавък" (или "единичен") е 32-битово число. Тук също се използва малко за знака. Експонентът обаче има 8 бита (пристрастия = 127), а мантисата 23.
- Типът данни "двойно" също използва малко за знака. Тук обаче експонентът има 11 бита (пристрастия = 1023), а мантисата дори 52 бита. Общо това е 64 бита, т.е. 8 байта.
- В допълнение към тези три често срещани типа данни има още много. Те обаче най-вече не се използват, защото точността на половина, плаващ и двоен вече е достатъчно добра.
Преобразувайте десетични числа в числа с плаваща запетая - как работи
И накрая, бихме искали да ви покажем как можете да конвертирате нормално десетично число в число с плаваща запетая.
- В този пример използваме десетичното число 18.4. Числото преди десетичната запетая се прехвърля за първи път в двойната система. В резултат на това трябва да получите (10010) ₂.
- След това трябва да конвертирате 0.4. Първо умножете 0, 4 по 2. Получавате 0, 8 като резултат. Запишете номера преди запетаята. В този случай това е 0. След това умножете 0, 8 по 2. Този път получавате 1, 6 като резултат. Забележете 1 и продължете да изчислявате с 0, 6. След известно време ще забележите, че моделът се повтаря (в този пример). Накрая запишете всички числа от горе до долу: 011001100110 ...
- След това добавете числата заедно: Също така добавете (⋅ 2⁰), така че да получите 10010.01100110 ... ⋅ 2⁰. След това преместете запетаята, докато има само 1 пред десетичната запетая, и също променете силата по подходящ начин. В резултат на това трябва да получите 1.001001100110 ... ⋅ 2⁴, тъй като сте преместили десетичната запетая 4 места вляво. Тази стъпка се нарича още "нормализиране".
- В този пример използваме типа данни "float". Затова добавете подходящата стойност на пристрастие към експонента си. Трябва също да преобразувате резултата от изчислението 4 + 127 = 131 в двоично число. Числото 131 е числото 10000011 в двойната система.
- Сега можете да запишете готовия номер с плаваща запетая. Първо напишете бита за знака. Тъй като това е положително число, първият бит е 0. След това трябва да напишете 131. Цялото нещо се вписва идеално в този случай, тъй като този номер изисква 8 бита и 8 бита са достъпни за поплавък. И накрая, трябва да запишете първите 23 бита на mantissa, тъй като mantissa има 23 бита на разположение за поплавък.
- Вашият завършен номер с плаваща запетая трябва да бъде числото 01000001100100110011001100110011. Малко по-ясно е числото 0 | 10000011 | 00100110011001100110011.
Преобразуване на номер с плаваща запетая в десетичен номер - Ето как
И накрая, бихме искали да ви покажем как можете да конвертирате отново число с плаваща запетая в десетично число. За това вземаме числото 1000001100100110011001100110011.
- Първо попълнете числото (отпред) с нули, докато не получите 16, 32 или 64 битово число. В случая това е 01000001100100110011001100110011.
- Първата цифра означава знака. Така че броят ни е положителен.
- След това напишете следващата (в случая) 8 цифри и извадете отклонението. (10000011) ₂ = 131 → 131 - 127 = 4 → Значи има „⁴ 2⁴“ отзад.
- Сега напишете "1" и след това всички останали числа, както и "⋅ 2⁴": 1.00100110011001100110011 ⋅ 2⋅
- След това преместете запетаята на 4 места вдясно, така че да можете да пропуснете "⋅ 2⁴": 10010.0110011001100110011
- След това преобразувайте 10010 в цяло число, както обикновено. Вие получавате 18.
- Сега трябва да конвертирате десетичните знаци. Първата цифра след запетаята има стойност 1: 2¹, втората цифра 1: 2² и така нататък. Добавете стойностите и числото преди запетаята ви дава числото 18.3999996185302734375.
В следващия практичен съвет ще ви покажем как можете да конвертирате ASCII букви в двоични числа.