Quid est quid? · bei.pm
In hac sectione articuli de formatis fasciculorum et ingenio reverso sunt.
Nunc res ita se habet:
Multae linguae programmandi foris sunt et multi homines quaedam sub nomibus prorsus diversis norunt - aut omnino nihil sciunt de existentia rerum fundamentalium, quia lingua eorum programmandi ea abstracte ab ipsis removet.
tl;dr:
Notatio mea ad C99 <stdint.h>
vulgariter orientatur. Qui hanc notationem intellegere potest, cum notatione mea bene congruere poterit.
Integer
Integer sunt simpliciter dicenda numeri integri, id est, numeri sine parte decimalis.
Integra in formatis datorum plerumque intra certum numerorum spectrum, quasi resolutionem, definita sunt. Hanc in Bitis indicabo - quod "Byte" et genera ex eo dependentia (Word, Qword, ...) plerumque a platforma dependunt.
Insuper inter typa integrorum etiam distinguitur inter numeros naturales (ℕ, id est, sine signo - Unsigned) et numeros integros (ℤ, id est, cum signo - Signed).
Haec informatio per signum in nominatore (u
vel s
) est evidens.
Fieri potest ut signo affixi numeri integri veluti complementum unius represententur aut ut complementum duo.
Dum aliter non indicatur, complementum duo adhibetur, cum in moderna informatica praefertur representatio sit.
Numeri sine signo a me in documentis meis ut uint
indicantur, cum sequenti indicatione praecisionis in Bits.
Numeri cum signo a me in documentis meis ut sint
indicantur, etiam cum sequenti indicatione praecisionis in Bits.
Usum generis datae "char" pro signis omitto, cum signorum catenae plerumque tantum integerum valorum catenae cum speciali interpretatione repraesentent.
Haec ergo ut uint(8)[] repraesentantur.
Exempla:
Notatio | Equivalens C99 stdint.h |
Descriptio | Numerorum Spatium |
---|---|---|---|
uint(16) | uint16_t | Integer Non Signatum, Longitudo 16 Bit | 0 - 65.535 |
sint(8) | int8_t | Integer Signatum, Longitudo 8 Bit, Complementum Duo | -126 - 127 |
uint(24) | uint32_t:24 | Integer Non Signatum, Longitudo 24 Bit | 0 - 16.777.216 |
Valores comma fixi
Valorum fixorum sunt numeri ex spectrum Numerorum rationalium (Q), qui igitur commate et decimalibus praediti sunt.
In valoribus fixis - unde etiam nomen - locus commatis per genus datum fixus est.
Itaque oritur etiam spatium numerorum definitum pro numeris huius generis; mathematically expressum, spatium numerorum finitum est.
In re, hic genus datum praecipue in suggestis sine satis celeribus unitatibus hardware fluitantium adhibetur, quia computatio valorum fixorum per unitates integer fieri potest.
Genus datum etiam a systematibus administrationis datorum adhibetur, cum postulata fixa implenda sunt.
Considerandum est hic ad systemata ad conservationem permanentem datorum financialium; plerique currency ad duo decima loca se limitant.
(Non tamen sapienti est ad hanc rem valores fixos adhibere; sapientiorem est, potius minimam monetariam unitatem ut integer servare et reliquam representationis partem relinquere)
Analogice ad specificationes integer, in valoribus fixis resolutionem numeri ante et post comma indicabo:
ufixed(9,7)
significat genus datum, quod sine signo 9 bit pro valore ante commate, et 7 bit pro valore post commate reservat; in summa igitur 16 bit latum est et ita, exempli gratia, ut vector duorum inter se independens integer spatium (0,0) ad (511,127) operire potest.
Haec interpretatio tamen in sua decimalis representatione 28 numeros inanis consumet, quoniam verisimiliter ad summam (511,99) in usu se limitaret.
Pro directa interpretatione valoris fixi ut vector ex 2 integer separatis - quod fere semper spatium inane in conversione in numeros decimales et manuum translatio significat - potius pars decimalis interpretari potest ut fractio totius eius resolutionis.
Exempli gratia, in dictis ufixed(9,7)
oritur ita fractio per denominatorem 27 - spatium numerorum itaque ab 0,00 ad 511 + 126⁄127
Ad conversionem in representationem decimalem, ergo decima pars per 128 dividenda est.
Hac varietate facilius operationes mathematicas perfici possunt, quia translatio automatice oritur, unde haec varietas in omnibus fere praeferenda est.
Haec autem varietas incommodo habet, quod decimae partes in representatione decimalis non amplius certa resolutione praeditae sunt, una decima pars ergo non amplius aequivalent 0.01
, sed 0.007874
, quod ad errores rotundationis pertinentes ducet.
Quae interpretatio adhibetur, ad locum usus documentatur.
Valorum fluitantium sive levium
Valores fluitantes sunt expressiones mathematicas complexiores, quibus numerus integer cum resolutione fixa per terminum mathematicum ita exprimitur, ut pars decimalis per translationem efficaciter formetur - atque ita directe ad notationem scientificam orientetur.
Modus usitatus ad hoc efficiendum cum IEEE 754 standardizatus est et ab eo tempore internationaliter agnitus est.
Valor fluitans plerumque e sequentibus componentibus consistit:
Signum (0 aut 1 ) |
Exponent | Mantissa |
Dum signum ut informatio binaria I/Non facile elici potest, ipsa numerus per aequationem formatur
Mantissa * 2Exponent
Adhuc sunt plures constantes valores, qui casus speciales numerorum rationalium tegunt - inter quos ±∞
et NaN
("nulla numerus valida").
Valores fluitantes praesertim utiles sunt, cum accuratio non ita magna sit, cum in hac genere valorum necessario ad errores rotundationis et ita ad perditiones accurate veniatur. Typice, valores fluitantes ad definitionem coordinatarum, ut vectores vertex in exemplaribus 3D aut curvas Bézier/Spline ad fines repraesentationis opticae adhibentur.
In formatis datorum valores fluitantes ut float(Mantissa, Exponent)
specificantur.
Si formatum ab IEEE 754 discrepet, id congruenter indicatur.