Petra eo petra? · bei.pm

Ar tekst-mañ zo bet kempennet gant OpenAI GPT-4o Mini.

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.
pennad kostez evel integer ha da lezel an rest da vezañ kemeret en ur seurt)

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 + 126127 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.