Petra eo petra? · bei.pm
En hor rummad-mañ ez eus artikloù diwar-benn ar formatioù file ha reverse engineering.
Ha bremañ, evel-se:
Ez eus meur a yezh programm ha meur a dud, a c'houzout a ra traoù gant an anvioù disheñvel - pe c'hoarvezout e c'hallont bezañ n'eus forzh ar pezh a c'houzout a-bouez, abalamour ma ne c'hell ket o yezh programm kas anezho a-raok.
tl;dr:
Ma noten a ya d'ober goustadenn ouzh C99 <stdint.h>
. Piv a c'hall diskoachañ gant ar noten-se a vo sur d'en em glevet gant ma noten.
Intègre
Integer a zo, e gwirionez, niverioù diazezet, da lavarout eo niverioù hep delennoù dec'h.
Pennadoù, e vez desket ar Integer er furm data e meur a aozadur en un niver pennañ, ur sort raktres. E sellan ouzh an niver en bit - abalamour ma 'z eo un "Byte" hag ar stummoù o tont warni (Word, Qword, ...) en un doare a vez liammet ouzh an aozadur.
Ec'h e vez kemeret e c'hwezh ar stummoù Integer da lârat e vez ivez divizet etre niverioù natorel (ℕ, da lavarout eo, hep alioù - Unsigned) ha niverioù diazezet (ℤ, da lavarout eo, gant alioù - Signed).
Evit se, e kaver an titl e-barzh ar stumm (u
pe s
).
Ec'h e c'hall bezañ e c'hell ar niverioù diazezet bezañ diskouezet e form un dorn pe daou dorn.
Ma 'z eo ket disheñvel, e vez implijet an daou dorn abalamour ma 'z eo an doare a vez implijet en ar c'hendiviz.
Ec'h e vez roet an niverioù hep alioù evit din e ma dokumentioù evel uint
, gant un niver e Bits da lañsa ar c'hontrol.
Ec'h e vez roet an niverioù gant alioù evit din e ma dokumentioù evel sint
, gant un niver e Bits.
Me a ra diouzh ar stumm data "char" evit ar skeudennoù, abalamour ma 'z eo ar skeudennoù en un doare a vez an niverioù Integer heñchet gant un darvoudoù spesial.
Ar re-se a vez diskouezet evel uint(8)[].
Displegadennoù :
Notat | C99 stdint.h -Ekvivalant |
Deskrivadur | Ar c'hond |
---|---|---|---|
uint(16) | uint16_t | Integer dison, 16 Bit hed | 0 - 65.535 |
sint(8) | int8_t | Integer sin, 8 Bit hed, Duzlamm daou | -126 - 127 |
uint(24) | uint32_t:24 | Integer dison, 24 Bit hed | 0 - 16.777.216 |
Festoù Komma
Niveroù festkomma a zo niveroù eus ar spektrum niveroù rasionel (Q), a c'hall bezañ gant un komma hag pouezhioù war-lerc'h.
Evel ma'z eo an anv, e vez goullet ar stumm an niver da laoskel ar poent komma dre ar seurt donedigezh.
Hervez-se, e vez un niver dibabet evit an niveroù ar stumm-se ; evel m'emañ e mestr, eo an niver a zo pennadoù.
En argerzh, e vez implijet an stumm-mañ dreist-holl war blatoù hep ur hardware flouantez resis, abalamour ma c'haller ober ar c'homzioù festkomma gant un toullad integer.
Evel-se e vez implijet an donedigezh, da skouer gant sistemoù kargañ donedigezh, pa 'oar ez eus goulennioù stip a rank bezañ digoret.
Er memes doare, a c'houlenn an niver integer, e ra din en niver festkomma ar vuhez dirak ha war-lerc'h ar komm :
ufixed(9,7)
a dalv da stumm, n'eus ket ar skodenn 9 bit evit ar vuhez dirak ar komm, ha 7 bit evit ar vuhez war-lerc'h ar komm ; e sum a zo 16 bit en tu all, ha gwelloc'h e c'hall bezañ evel un vektoren eus daou integer disheñvel un tu da (0,0) betek (511,127).
Met e vefe 28 niver dianket e seurt dreist-holl e stumm decimal, abalamour ma rankfe ur seurt bezañ en un argerzh (511,99).
An zamiñ a vez implijet evit ur diouzh disheñvel eus an niver festkomma e seurt vektoren eus 2 integer disheñvel - a vez implijet alies un tu dianket e bret e niver decimal hag ur c'homz manuell - a c'hall bezañ implijet evel ur brak evit ar vuhez a-bezh.
Er skouer eus ar ufixed(9,7)
a c'hall bezañ implijet, a c'hall bezañ un brak war un numerator a 27 - an niver a c'hall bezañ eus 0,00 betek 511 + 126⁄127
Da vout en ur stumm decimal, e c'haller diviz ar poezh war-lerc'h dre 128.
Gant an doare-mañ e c'haller ober ar c'hemmoù a ra ar c'homz da vezañ aesoc'h, abalamour ma'z eo an komz a-raok e vez kemeret da vezañ implijet, hag e vez ar doare-mañ pennadoù eo.
Met, ar doare-mañ a zo ar muiañ, abalamour ma ne vez ket ar poezhioù war-lerc'h en arstumm decimal gant ur resis, un poezh decimal n'eo ket an hevelep a 0.01
, met 0.007874
, a c'hall bezañ ar c'houlenn a c'hall bezañ ar c'houlenn.
Penaos e c'hall bezañ ar seurt evezhiadenn implijet, e vez skrivet en ar gerioù implijet.
Gwerzhioù flamm- pe glemm-
Fließkomma-vlezhioù a zo kinniget evel savboñs matemañ gwelloc'h, ma'z eus ur niver a-fet gwirion gant ur c'holo a-fet matemañ, da c'hortoz e c'hall bezañ displeget an norzh a-berzh un arventenn - ha dre-se e vez implijet neuze ar notation scientifique ganto.
An doare brasañ da implijout an dra-se a zo bet standardizet gant
IEEE 754 ha diouzh-se e vez anavezet e-leizh er bed.
Evel-se, ur Fließkomma-vlezh a vez dreist-holl gant an elfennioù da-heul:
Marzh (0 pe 1 ) |
Exponent | Mantisse |
While the sign can be easily derived as a binary yes/no information, the actual number is formed through the equation
Mantisse * 2Exponent
Moreover, there are several constant values that cover special cases of niverioù rational - including ±∞
and NaN
("niver valid ebet").
Fließkomma-vlezhioù a zo gwelloc'h pa n'eo ket ar sklaeridigezh important, abalamour ma'z eus e-leizh a c'hwezh roundage ha dre-se a c'hwezh evit ar sklaeridigezh. Ar c'hontrol, Fließkomma-vlezhioù a vez implijet da sklaerañ koordineoù, evel vektorezhioù vertex e modeloù 3D pe Bézier-/Spline-kurvoù evit ar raktresoù implij.
Ezhomm e vez kinniget Fließkomma-vlezhioù evel float(Mantisse, Exponent)
e format ar donennoù.
Ma vez implijet ur format disheñvel diouzh IEEE 754, e vez kinniget ar pezh he c'houlenn.