Broj plutajuće točke: što je to? Jednostavno objasnjeno primjerima
U ovom praktičnom savjetu pokazat ćemo vam što je broj plutajuće točke i kako se razlikuje od broja fiksne točke.
Broj plutajuće točke: što je to?
U računarskoj znanosti, broj plutajuće točke često se koristi za mjerne uređaje koji bi trebali raditi s određenom točnošću.
- Broj plutajuće točke (ili "broj s pomičnom zarezom") je prikaz broja pomoću eksponencijalne notacije. U iznimnim slučajevima to djeluje samo približno. Možete predstaviti i broj 1230000 brojem 1, 23 ⋅ 10⁶.
- 1, 23 se zove "Mantissa". 10 je "baza", a 6 je "eksponent". Uzgred, znaku se može dodati i mantissa. Međutim, cijelu stvar možete primijeniti i na dualni sustav. Možete predstaviti i broj 10101100 brojem 1.0101100 ⋅ 2⁷. Računalo pohranjuje samo znak, mantisu i eksponent.
- Računala obično kreću zarez naprijed i natrag sve dok ispred zareza nema samo 1. Tada samo PC mora spremiti decimalna mjesta mantise i eksponenta.
- Kako bi eksponent mogao biti spremljen kao pozitivan broj, dodaje se fiksni broj, takozvana pristranost. Najmanji mogući eksponent mjesta prije decimalne točke (- pristranosti) sprema se kao 0.
- Za razliku od broja s fiksnom točkom, zarez nije u fiksnoj točki u broju s pomičnom zarezom.
Half, Float & Double - Zajedničko kodiranje brojeva s pomičnim zarezom
Sigurno ste naišli na ova tri pojma, posebno kod programiranja s Arduinom. To su standardizirani prikazi.
- Vrsta podataka "polovica" je 16-bitni broj. Gornji lijevi zalogac odgovoran je za znak. Izložak ima 5 bita, a mantisa 10. Upotrijebljeni pomak je 15. Budući da je prvi zaloga mantise (gotovo) uvijek 1, to se ne sprema.
- Tip podataka "float" (ili "single") je 32-bitni broj. I ovdje se za znak koristi malo. Međutim, eksponent ima 8 bita (pristranost = 127), a mantisa 23.
- Vrsta podataka "dvostruko" također koristi malo za znak. Ovdje, međutim, eksponent ima 11 bita (bias = 1023), a mantissa čak 52 bita. To je ukupno 64 bita, tj. 8 bajtova.
- Pored ove tri uobičajene vrste podataka, postoji još mnogo. Međutim, oni se uglavnom ne koriste jer je točnost polovica, plovka i dupla već dovoljno dobra.
Pretvorite decimalne brojeve u brojeve s pomičnim zarezom - kako to funkcionira
Na kraju, želimo vam pokazati kako normalan decimalni broj možete pretvoriti u broj s pomičnom zarezom.
- U ovom primjeru koristimo decimalni broj 18.4. Broj prije decimalne točke prvi put se prenosi u dualni sustav. Kao rezultat, trebali biste dobiti (10010) ₂.
- Tada morate pretvoriti 0, 4. Prvo pomnožite 0, 4 sa 2. Dobivate 0, 8 kao rezultat. Zapišite broj prije zareza. U ovom slučaju to je 0. Zatim pomnožite 0.8 s 2. Ovaj put kao rezultat dobijete 1.6. Zapišite 1 i nastavite s izračunom s 0, 6. Nakon nekog vremena primijetit ćete da se uzorak ponavlja (u ovom primjeru). Na kraju, zapišite sve brojeve od vrha do dna: 011001100110 ...
- Zatim zbrojite brojeve: Dodajte i (⋅ 2⁰) tako da dobijete 10010.01100110 ... ⋅ 2⁰. Zatim pomičite zarez sve dok ispred decimalne točke nije samo 1, a također promijenite snagu na odgovarajući način. Kao rezultat, trebali biste dobiti 1.001001100110 ... ⋅ 2⁴, jer ste pomaknuli decimalnu točku 4 mjesta s lijeve strane. Ovaj se korak naziva i "normaliziranjem".
- U ovom primjeru koristimo vrstu podataka "float". Stoga dodajte odgovarajućoj vrijednosti pristranosti vašem eksponentu. Morate također pretvoriti rezultat izračuna 4 + 127 = 131 u binarni broj. Broj 131 je broj 10000011 u dualnom sustavu.
- Sada možete zapisati broj gotovog plutajuće točke. Najprije napišite bit za znak. Budući da je to pozitivan broj, prvi bit je 0. Tada morate napisati 131. U ovom slučaju se cijela stvar potpuno uklapa, jer za ovaj je broj potrebno 8 bita, a 8 bita je na raspolaganju za float. Na kraju, morate zapisati prva 23 bita mantisse jer mantissa ima 23 bita na raspolaganju za float.
- Vaš gotovi broj s pomičnim zarezom trebao bi biti broj 01000001100100110011001100110011. Malo jasniji je broj 0 | 10000011 | 00100110011001100110011.
Pretvorite broj s pomičnom zarezom u decimalni broj - Evo kako
Na kraju, želimo vam pokazati kako ponovo možete pretvoriti broj s pomičnim zarezom u decimalni broj. Za to uzimamo broj 1000001100100110011001100110011.
- Najprije napunite broj (sprijeda) s nulama dok ne dobijete 16, 32 ili 64 bitni broj. U ovom slučaju to je 01000001100100110011001100110011.
- Prva znamenka stoji za znak. Dakle, naš je broj pozitivan.
- Zatim napišite sljedećih (u ovom slučaju) 8 znamenki i oduzmite pristranosti. (10000011) ₂ = 131 → 131 - 127 = 4 → Pa je straga „⁴ 2⁴“.
- Sada napišite "1", a zatim sve preostale brojeve, kao i "⋅ 2⁴": 1.00100110011001100110011 ⋅ 2⋅
- Zatim pomaknite zarez 4 mjesta udesno, tako da možete izostaviti "⋅ 2⁴": 10010.0110011001100110011
- Zatim pretvorite 10010 u cijeli broj kao i obično. Imate 18 godina.
- Sada morate pretvoriti decimalna mjesta. Prva znamenka nakon zareza ima vrijednost 1: 2¹, druga znamenka 1: 2² i tako dalje. Dodajte vrijednosti i broj prije zareza daje vam broj 18.3999996185302734375.
U sljedećem praktičnom savjetu pokazat ćemo vam kako možete pretvoriti ASCII slova u binarne brojeve.