Slankiojo kablelio numeris: kas tai? Tiesiog paaiškinta pavyzdžiais
Šiame praktiniame patarime mes parodysime, kas yra slankiojo kablelio numeris ir kuo jis skiriasi nuo fiksuoto taško skaičiaus.
Slankiojo kablelio numeris: kas tai?
Informatikoje slankiojo kablelio numeris dažnai naudojamas matuojant prietaisus, kurie turėtų veikti tam tikru tikslumu.
- Slankiojo kablelio numeris (arba "slankiojo kablelio numeris") yra skaičiaus atvaizdavimas naudojant eksponentinį žymėjimą. Išimtiniais atvejais tai veikia tik apytiksliai. Taip pat galite pavaizduoti numerį 1230000 su numeriu 1, 23 ⋅ 10⁶.
- 1.23 vadinasi „Mantissa“. 10 yra „bazė“, o 6 yra „eksponentas“. Beje, ženklas taip pat gali būti pridedamas prie mantisos. Tačiau visa tai galite pritaikyti ir dvejopai sistemai. Taip pat galite pavaizduoti numerį 10101100 kartu su numeriu 1.0101100 ⋅ 2⁷. Kompiuteryje saugomas tik ženklas, mantija ir eksponentas.
- Kompiuteriai paprastai perkelia kablelį pirmyn ir atgal, kol priešais kablelį yra tik 1. Tuomet kompiuteryje reikia tik išsaugoti dešimtaines mantijos ir eksponento vietas.
- Kad eksponentą būtų galima išsaugoti kaip teigiamą skaičių, pridedamas fiksuotas skaičius, vadinamasis šališkumas. Mažiausias įmanomas vietos eksponentas prieš dešimtainį tašką (- šališkumas) išsaugomas kaip 0.
- Skirtingai nuo fiksuoto taško skaičiaus, kablelis nėra kintamojo taško skaičiaus fiksuotame taške.
Pusė, slankioji ir dviguba - bendras slankiojo kablelio skaičių kodavimas
Jūs tikrai suklupote per šias tris sąvokas, ypač kai programuojate su Arduino. Tai yra standartizuotos reprezentacijos.
- Duomenų tipas „pusė“ yra 16 bitų skaičius. Kairysis kailis yra atsakingas už ženklą. Eksponentas turi 5 bitus, o mantissa 10. Naudojamas šališkumas yra 15. Kadangi pirmasis mantisos bitas yra (beveik) visada 1, tai neišsaugoma.
- Duomenų tipas „plūduriuojantis“ (arba „vienas“) yra 32 bitų skaičius. Čia taip pat šiek tiek naudojamas ženklas. Tačiau eksponentas turi 8 bitus (poslinkis = 127), o mantissa 23.
- Duomenų tipas „dvigubas“ taip pat šiek tiek naudojamas ženklui. Tačiau čia eksponentas turi 11 bitų (poslinkis = 1023), o mantisa - net 52 bitai. Iš viso tai yra 64 bitai, t. Y. 8 baitai.
- Be šių trijų įprastų duomenų tipų, yra ir daugiau. Tačiau dažniausiai jie nenaudojami, nes pusės, plūdriojo ir dvigubo tikslumas jau yra pakankamai geras.
Dešimtainius skaičius paverskite slankiojo kablelio skaičiais - kaip tai veikia
Galiausiai norėtume jums parodyti, kaip galite konvertuoti įprastą dešimtainį skaičių į kintamąjį skaičių.
- Šiame pavyzdyje naudojame dešimtainį skaičių 18, 4. Skaičius prieš dešimtainį tašką pirmą kartą perkeliamas į dvigubą sistemą. Dėl to turėtumėte gauti (10010) ₂.
- Tada jūs turite konvertuoti 0, 4. Pirmiausia padauginkite 0, 4 iš 2. Rezultatas yra 0, 8. Užrašykite numerį prieš kablelį. Tokiu atveju tai yra 0. Tada padauginkite 0, 8 iš 2. Šį kartą gaukite 1, 6. Parašykite 1 ir toliau skaičiuokite naudodami 0, 6. Po kurio laiko pastebėsite, kad modelis kartojasi (šiame pavyzdyje). Galiausiai užrašykite visus skaičius iš viršaus į apačią: 011001100110 ...
- Tada sudėti skaičius: Taip pat pridėkite (⋅ 2⁰), kad gautumėte 10010.01100110 ... ⋅ 2⁰. Tada perkelkite kablelį, kol priešais dešimtainį tašką yra tik 1, taip pat atitinkamai pakeiskite galią. Dėl to turėtumėte gauti 1, 001001100110 ... ⋅ 2⁴, nes dešimtainį tašką perkėlėte 4 vietas į kairę. Šis žingsnis dar vadinamas „normalizavimu“.
- Šiame pavyzdyje mes naudojame duomenų tipą „float“. Taigi pridėkite atitinkamą šališkumo vertę savo eksponentui. Taip pat turite konvertuoti skaičiavimo rezultatą 4 + 127 = 131 į dvejetainį skaičių. Skaičius 131 yra skaičius 10000011 dviguboje sistemoje.
- Dabar galite užrašyti baigtą slankiojo kablelio numerį. Pirmiausia parašykite šiek tiek ženklo. Kadangi tai yra teigiamas skaičius, pirmasis bitas yra 0. Tada jūs turite parašyti 131. Šiuo atveju visa tai puikiai tinka, nes šiam skaičiui reikia 8 bitų, o plūdės yra 8 bitai. Galiausiai turite užsirašyti pirmuosius 23 mantisos bitus, nes mantissa yra 23 bitai, skirti plūduriuoti.
- Taigi jūsų baigtas slankiojo kablelio numeris turėtų būti numeris 01000001100100110011001100110011. Šiek tiek aiškesnis yra skaičius 0 | 10000011 | 00100110011001100110011.
Konvertuoti slankiojo kablelio skaičių į dešimtainį skaičių - štai kaip
Galiausiai norėtume jums parodyti, kaip vėl galite konvertuoti slankiojo kablelio skaičių į dešimtainį skaičių. Tam imame numerį 1000001100100110011001100110011.
- Pirmiausia užpildykite numerį (priekinį) nuliais, kol gausite 16, 32 arba 64 bitų skaičių. Šiuo atveju tai yra 01000001100100110011001100110011.
- Pirmasis skaitmuo žymi ženklą. Taigi mūsų skaičius yra teigiamas.
- Tada parašykite kitus (šiuo atveju) 8 skaitmenis ir atimkite paklaidą. (10000011) ₂ = 131 → 131 - 127 = 4 → Taigi gale yra „⋅ 2⁴“.
- Dabar parašykite „1“, tada visus likusius skaičius, taip pat „⋅ 2⁴“: 1.00100110011001100110011 ⋅ 2⋅
- Tada perkelkite kablelį 4 vietas į dešinę, kad galėtumėte praleisti „⋅ 2⁴“: 10010.0110011001100110011
- Tada konvertuokite 10010 į sveiką skaičių, kaip įprasta. Gauni 18 metų.
- Dabar jūs turite konvertuoti dešimtųjų tikslumu. Pirmasis skaitmuo po kablelio turi reikšmę 1: 2¹, antrasis skaitmuo 1: 2² ir pan. Pridėkite reikšmes, o skaičius prieš kablelį suteikia jums skaičių 18.3999996185302734375.
Kitame praktiniame patarime jums parodysime, kaip galite konvertuoti ASCII raides į dvejetainius skaičius.