Hvað er hvað? · bei.pm
Í þessari flokk eru greinar um skráarsnið og afturhendir.
En nú er svo:
Það eru til mörg forritunarmál úti í heimi og margir sem þekkja ýmsa hluti undir alveg öðrum nöfnum - eða hafa jafnvel enga hugmynd um tilvist grundvallaratriða, vegna þess að forritunarmálið þeirra hefur fært það frá þeim.
tl;dr:
Min skrifun er að mestu leyti byggð á C99 <stdint.h>
. Sá sem getur unnið með þessa skrifun mun örugglega eiga auðvelt með mína skrifun.
Heiltala
Heiltölur eru einfaldlega heilar tölur, þ.e. tölur án aukastafa.
Heiltölur eru venjulega skilgreindar í gagnaskipulagi innan fasts töluspektrs, næstum eins konar upplausnar. Ég gef þessa skýringu í bita - af því að "Byte" og þær tegundir sem byggja á því (Word, Qword, ...) eru yfirleitt háðar vettvangi.
Furthermore, er einnig greint á milli náttúrulegra talna (ℕ, þ.e. án formerkis - Unsigned) og heiltalna (ℤ, þ.e. með formerki - Signed).
Þessar upplýsingar koma fram í formerkinu í nafngiftinni (u
eða s
).
Það er mögulegt að formerkið í heiltölum sé annað hvort framsett sem einukomplement eða sem tvíukomplement.
Þar til annað er tilgreint, er tvíukomplementið notað, þar sem það er sú framsetning sem er fyrst og fremst notuð í nútíma tölvunarfræði.
Ég gef upp formerkislausar tölur í mínum skjalum sem uint
, með því að tilgreina nákvæmni í bita á eftir.
Formerkið í tölum er líka gefið upp sem sint
, einnig með tilgreiningu á nákvæmni í bita.
Ég sleppi notkun gagnategundarinnar "char" fyrir tákn, þar sem táknaröð er venjulega bara röð af heiltölugildum með sérstakri túlkun.
Þau eru því framsett sem uint(8)[].
Dæmi:
Skilgreining | C99 stdint.h -samsvarandi |
Skýring | Tölurými |
---|---|---|---|
uint(16) | uint16_t | Ósignað heiltala, 16 bita lengd | 0 - 65.535 |
sint(8) | int8_t | Signuð heiltala, 8 bita lengd, tvöfalda komplement | -126 - 127 |
uint(24) | uint32_t:24 | Ósignað heiltala, 24 bita lengd | 0 - 16.777.216 |
Festkomma-gildi
Föstu tölur eru tölur úr sviði raunverulegra talna (Q), sem hafa því kommu og aukastafina.
Þegar kemur að föstum tölum er - þar af leiðandi einnig nafnið - staðsetning kommunnar fyrirfram ákveðin af gagnategundinni.
Þetta leiðir einnig til fasts tölublaðs fyrir tölur af þessari gagnategund; í stærðfræðilegum skilningi er tölurýmið endað.
Í raunveruleikanum er þessi gagnategund aðallega notuð á pöllum þar sem fljótt fljótandi punktahardware er ekki til staðar, þar sem útreikningur á föstum tölum getur verið framkvæmdur í heiltölueiningum.
Auk þess er gagnategundin notuð af gagnastýringarkerfum þegar fastar kröfur þurfa að uppfyllast.
Hugsaðu um kerfi fyrir varanlega geymslu fjármálagagna; flestar myntir takmarka sig við 2 aukastafi.
(Það er þó ekki skynsamlegt að nota föst tölur fyrir þetta; skynsamlegra er að geyma beint minnsta mynteiningu sem heiltölu og láta restina af framsetningunni vera)
Líkt og í heiltölu skýringu gef ég upp upplausn tölunnar fyrir og eftir kommu:
ufixed(9,7)
táknar gagnategund sem notar 9 bita fyrir gildið fyrir kommu, og 7 bita fyrir gildið eftir kommu; í heildina er það 16 bita breitt og getur þannig til dæmis verið sem vektor tveggja óháðra heiltala sem nær yfir bil (0,0) til (511,127).
Þessi túlkun myndi hins vegar í tugabrotinu gefa 28 tölur ónotaðar, þar sem líklega væri frekar takmarkað við hámark (511,99) í raunveruleikanum.
Í stað þess að túlka föstu töluna beinlínis sem vektor úr 2 aðskildum heiltölum - sem nær alltaf leiðir til ónotaðs gagnasvæðis við umbreytingu í tugabrot og handvirkan flutning - er einnig hægt að túlka eftirkomusvæðið sem hlutfall af heildar upplausninni.
Þannig, í dæmi um ufixed(9,7)
kemur út hlutfall með nenni 27 - tölublaðið nær þá frá 0,00 til 511 + 126⁄127
Til að umbreyta í tugabrot myndi eftirkomustafurinn því þurfa að deila með 128.
Með þessari útgáfu er auðveldara að framkvæma reikniaðgerðir, þar sem flutningur myndast sjálfkrafa, sem gerir þessa útgáfu að regla valin.
Hins vegar hefur þessi útgáfa það í för með sér að eftirkomustafir í tugabrotinu hafa ekki lengur tryggða upplausn, þannig að einstök tugastafur hefur ekki lengur gildi 0.01
, heldur 0.007874
, sem mun leiða til viðeigandi hringingavillna.
Hvaða túlkunaraðferð er notuð er skrifuð niður á notkunarstað.
Flytjandi eða glertölur
Flotgildi eru stærðfræðilega flóknari útreikningar, þar sem heiltala með föstum upplausn er tjáð með stærðfræðilegu hugtaki þannig að eftirkomandi hlutinn myndast með að færa, - og þannig tengist það beint vísindalegri skrift.
Algengasta leiðin til að framkvæma þetta var staðfest með
IEEE 754 og hefur síðan verið viðurkennd alþjóðlega.
Flotgildi samanstanda venjulega af eftirfarandi þáttum:
Merki (0 eða 1 ) |
Vísir | Mantissa |
Þó merkið sé einfalt að ná fram sem tvíundar Já/Nei upplýsingar, þá myndast raunverulega talan yfir jöfnuna
Mantissa * 2Vísir
Auk þess eru til ákveðin staðlaðir gildi sem fjalla um sérstaka tilvik rational númer - þar á meðal ±∞
og NaN
("ekki gilt tala").
Flotgildi eru sérstaklega gagnleg þegar nákvæmni skiptir ekki máli, þar sem á þessari tegund gilda er óhjákvæmilegt að verða fyrir hringitöluvillum og þar af leiðandi nákvæmni tap. Almennt eru flotgildi notuð til dæmis til að skilgreina hnit, eins og vertex-vigrar í 3D módeli eða Bézier-/Spline-kúrvur fyrir sjónræn framsetningartilgang.
Í gagnaskipulagi eru flotgildi skilgreind sem float(Mantissa, Vísir)
.
Ef notað er annað skipulag en IEEE 754 er það tilkynnt í samræmi við það.