Ujukoma number: mis see on? Lihtsalt selgitatud näidetega
Selles praktilises näpunäites näitame teile, mis on ujukoma number ja kuidas see erineb fikseeritud punkti numbrist.
Ujukoma number: mis see on?
Infotehnoloogias kasutatakse ujukoma numbrit sageli mõõteseadmete jaoks, mis peaksid töötama kindla täpsusega.
- Ujukoma number (või "ujukoma number") on arvu esitus eksponentsiaalse märke abil. Erandjuhtudel toimib see ainult ligikaudselt. Võite esindada ka numbrit 1230000 numbriga 1, 23 ⋅ 10⁶.
- 1.23 kannab nime "Mantissa". 10 on "alus" ja 6 on "eksponent". Muide, mantissale võib lisada ka märgi. Kuid kogu asja saab rakendada ka kahesüsteemis. Võite esindada ka numbrit 10101100 numbriga 1.0101100 ⋅ 2⁷. Arvuti salvestab ainult märgi, mantissa ja eksponendi.
- Tavaliselt liiguvad arvutid koma edasi-tagasi, kuni koma ees on ainult üks. Siis peab arvuti salvestama ainult mantissa ja eksponendi komakohad.
- Nii et eksponenti saab positiivse numbrina salvestada, lisatakse fikseeritud arv, nn eelpinge. Koha väikseim võimalik eksponent enne koma (- diagonaal) salvestatakse kui 0.
- Vastupidiselt fikseeritud punkti numbrile ei ole koma ujukomaga numbri fikseeritud punktis.
Pool, ujuk ja topelt - ujukoma numbrite ühine kodeerimine
Olete kindlasti komistanud neist kolmest terminist, eriti Arduinoga programmeerides. Need on standardiseeritud esindused.
- Andmetüüp "pool" on 16-bitine number. Märgi eest vastutab vasakpoolsem osa. Eksponendil on 5 bitti ja mantissal 10. Kasutatav diagonaal on 15. Kuna mantissa esimene bit on (peaaegu) alati 1, siis seda ei salvestata.
- Andme tüüp "ujuk" (või "üksik") on 32-bitine arv. Ka siin kasutatakse natuke tähist. Eksponendil on aga 8 bitti (diagonaal = 127) ja mantissas 23.
- Andmetüüp "topelt" kasutab märgi jaoks ka natuke. Siin on aga eksponendil 11 bitti (diagonaal = 1023) ja mantissal isegi 52 bitti. Kokku on see 64 bitti, s.t 8 baiti.
- Lisaks nendele kolmele levinud andmetüübile on veel palju muud. Neid enamasti siiski ei kasutata, kuna poole, ujuki ja kahekordse täpsus on juba piisavalt hea.
Teisendage kümnendarvud ujukoma numbriteks - kuidas see töötab
Lõpuks tahaksime teile näidata, kuidas saate teisendada tavalise kümnendarvu ujukomaks.
- Selles näites kasutame komakohta 18, 4. Enne koma sisestatud arv kantakse esmakordselt kahesüsteemi. Selle tulemusel peaksite saama (10010) ₂.
- Siis peate teisendama 0, 4. Esmalt korrutage 0, 4 kahega. Saate tulemuseks 0, 8. Enne koma sisestage number. Sel juhul on see 0. Siis korrutage 0, 8 kahega. Seekord saate tulemuseks 1, 6. Tehke märge 1 ja jätkake arvutamist 0, 6-ga. Mõne aja pärast märkate, et muster kordub (selles näites). Lõpuks kirjutage kõik numbrid ülalt alla: 011001100110 ...
- Seejärel lisage numbrid kokku: Lisage ka (⋅ 2⁰), nii et saate 10010, 01100110 ... ⋅ 2⁰. Seejärel liigutage koma, kuni koma ees on ainult 1, ja muutke ka võimsust vastavalt. Selle tulemusel peaksite saama 1, 001001100110 ... ⋅ 2⁴, kuna olete teisaldanud koma 4 kohta vasakule. Seda etappi nimetatakse ka "normaliseerimiseks".
- Selles näites kasutame andmetüüpi "float". Seega lisage oma eksponendile sobiv erapoolikuse väärtus. Samuti peate arvutustulemuse 4 + 127 = 131 teisendama binaalarvuks. Number 131 on kahesüsteemis arv 10000011.
- Nüüd saate valmis ujukoma numbri kirja panna. Kõigepealt kirjutage märk natuke. Kuna see on positiivne arv, siis esimene bit on 0. Siis peate kirjutama 131. Kogu asi sobib sel juhul ideaalselt, kuna see arv nõuab 8 bitti ja ujuki jaoks on saadaval 8 bitti. Lõpuks peate kirjutama esimesed 23 mantissa bitti, kuna mantissal on ujuki jaoks saadaval 23 bitti.
- Seetõttu peaks teie valmis ujukoma number olema 01000001100100110011001100110011. Pisut selgem on number 0 | 10000011 | 00100110011001100110011.
Teisendage ujukoma number kümnendnumbriks - toimige järgmiselt
Lõpuks tahame teile näidata, kuidas saate teisendada ujukoma arvu kümnendkohaks. Selle jaoks võtame numbri 1000001100100110011001100110011.
- Esmalt täitke number (esiosa) nullidega, kuni saate 16, 32 või 64 bitist numbrit. Sel juhul on see 01000001100100110011001100110011.
- Esimene number tähistab tähist. Seega on meie arv positiivne.
- Seejärel kirjutage järgmine (antud juhul) 8 numbrit ja lahutage diagonaal. (10000011) ₂ = 131 → 131 - 127 = 4 → Nii et selle taga on "⋅ 2⁴".
- Kirjutage number "1" ja seejärel kõik ülejäänud numbrid, samuti "⋅ 2⁴": 1.00100110011001100110011 ⋅ 2⋅
- Seejärel nihutage koma 4 kohta paremale, et saaksite jätta tähe "⋅ 2⋅": 10010.0110011001100110011
- Seejärel teisendage 10010 täisarvuks nagu tavaliselt. Saad 18.
- Nüüd peate teisendama kümnendkoha täpsusega. Esimene komajärgne number on väärtus 1: 2¹, teine number 1: 2² ja nii edasi. Lisage väärtused ja koma ees olev arv annab teile numbri 18.3999996185302734375.
Järgmises praktilises näpunäites näitame teile, kuidas saate teisendada ASCII tähti kahendarvudeks.