Çfarë është çfarë? · bei.pm

Ky tekst u përkthye automatikisht nga OpenAI GPT-4o Mini.

Në këtë rubrikë ka artikuj mbi formatet e skedarëve dhe ingjinierinë përmbysëse.

Tani është kështu:
Ka shumë gjuhë programimi atje jashtë dhe shumë njerëz që njohin disa gjëra me emra krejt të ndryshëm - ose nuk kanë asnjë ide për ekzistencën e gjërave themelore, sepse gjuha e tyre e programimit i ka abstrahuar ato.

tl;dr:
Nota ime është rreth C99 <stdint.h>. Kush di të punojë me këtë notacion, sigurisht do të jetë në gjendje ta kuptojë notën time.

Numër të Plotë

Integer janë thjesht numra të plotë, pra numra pa pjesë të thjeshta.

Këta integer zakonisht janë të definuar në formatet e të dhënave brenda një spektri të caktuar numerik, njëfarë rezolucioni. Këtë e jep në bit - për shkak se një "Byte" dhe llojet e tjera të ndërtuara mbi të (Word, Qword, ...) zakonisht varen nga platforma.

Për më tepër, ka dallime mes llojeve të integerëve midis numrave natyrorë (ℕ, pra, pa shenjë - Unsigned) dhe numrave të plotë (ℤ, pra, me shenjë - Signed).
Kjo informacion është e dukshme përmes një shenje në emërtues (u ose s).

Është e mundur që numrat e plotë me shenjë të paraqiten ose si njëkomplement ose si dykomplement.
Për sa kohë që nuk është thënë ndryshe, do të përdoret dykomplementi, pasi në informatikën moderne është paraqitja e preferuar.

Numrat pa shenjë jepen nga unë në dokumentacionet e mia si uint, me pasqyrimin e saktësisë në Bits.
Numrat me shenjë jepen nga unë në dokumentacionet e mia si sint, gjithashtu me pasqyrimin e saktësisë në Bits.

Unë e shmang përdorimin e tipit të të dhënave "char" për karaktere, pasi vargjet e karaktereve zakonisht përfaqësojnë vetëm vargje të vlerave integer me një interpretim të veçantë.
Këto përfaqësohen si uint(8)[].

Shembuj:

Notacioni Ekivalenti C99 stdint.h Përshkrimi Hapsira e numrave
uint(16) uint16_t Numër i pa nënshkruar, gjatësi 16 Bit 0 - 65.535
sint(8) int8_t Numër i nënshkruar, gjatësi 8 Bit, dyerkomplement -126 - 127
uint(24) uint32_t:24 Numër i pa nënshkruar, gjatësi 24 Bit 0 - 16.777.216

Vlerat e festkomma-s

Vlerat me pikë fikse janë vlera numerike nga spektri i Numrave Racionalë (Q), të cilat disponojnë një pikë si dhe vendet pas pikës.

Për vlerat me pikë fikse, - nga këtu dhe emri - pozita e pikës është e caktuar përmes tipit të të dhënave.
Kështu, rezulton gjithashtu një gamë e caktuar numrash për numrat e këtij tipi të të dhënave; e shprehur matematikisht, hapësira numerike është e përfunduar.

Në praktikë, ky tip të dhënash përdoret kryesisht në platforma pa një njësinë të mjaftueshme të shpejtë për llogaritjen me pikë të lëvizshme, pasi llogaritja e vlerave me pikë fikse mund të realizohet përmes njësive të tërësishme.

Përveç kësaj, ky tip të dhënash përdoret, për shembull, nga sistemet e menaxhimit të bazave të të dhënave, kur duhet përmbushur kërkesa të caktuara.
Mund të mendohet për sistemet për ruajtjen e përhershme të të dhënave financiare; shumica e monedhave kufizohen në 2 vende pas pikës. (Por nuk është e mençur të përdoren vlera me pikë fikse për këtë; është më e zgjuar të ruhet direkt njësia më e vogël monetare si një numër i plotë dhe të lihet pjesa tjetër e nivelit të përfaqësimit.)

Analog me shprehjet e numrave të plotë, unë jep si për vlerat me pikë fikse, zgjidhjen e numrit para dhe pas pikës:
ufixed(9,7) përfaqëson një tip të dhënash, që rezervon 9 bit për vlerën para pikës dhe 7 bit për vlerën pas pikës; në total, pra, është 16 bit e gjerë dhe mund të mbulojë një gamë nga (0,0) deri në (511,127) si një vektor të dy numrave të pavarur.
Kjo interpretim, megjithatë, do të humbiste 28 numra në përfaqësimin e saj dhjetor, pasi ndoshta do të kufizohej maksimalisht në (511,99) në praktikë.

Në vend të një interpretimi direkt të vlerës me pikë fikse si një vektor nga 2 numra të veçantë - që pothuajse gjithmonë do të thotë një hapësirë të papërdorur të të dhënave gjatë konvertimit në numra dhjetorë dhe një bartje manuale - mund të interpretohet gjithashtu që zona pas pikës si një fraksion i zgjidhjes së saj totale.
Në shembullin e sapo përmendur ufixed(9,7) rezulton një fraksion mbi një emërues prej 27 - hapësira numerike pastaj shkon nga 0,00 deri në 511 + 126127 Për konvertimin në një përfaqësim dhjetor, vendi pas pikës do të duhet ndarë nga 128.
Me këtë variant, operacionet matematikore mund të kryhen më lehtë, pasi bartja ndodh automatikisht, duke e bërë këtë variant të preferuar zakonisht.
Por ky variant ka disavantazhin se vendet pas pikës në përfaqësimin dhjetor nuk disponojnë më një zgjidhje të garantuar, një vend dhjetor nuk ka më vlerën 0.01, por 0.007874, e cila do të çojë në gabime përkatëse të rrumbullakimit.

Forma e interpretimit që përdoret do të dokumentohet përkatësisht në vendin e përdorimit.

Vlerat e numrave me pikë të lëkundshme

Vlerat me pikë lëvizëse janë shprehje matematikore më komplekse, ku një numër i plotë me zgjidhje fikse shprehet përmes një termi matematikor në mënyrë që pjesa pas pikës të formohet nëpërmjet zhvendosjes - dhe kështu orientohen drejtpërdrejt me notacionin shkencor.
Mënyra më e zakonshme për ta realizuar këtë është standardizuar me IEEE 754 dhe që nga atëherë është pranuar ndërkombëtarisht.

Një vlerë me pikë lëvizëse përbëhet zakonisht nga komponentët e mëposhtëm:

Shenja (0 ose 1) Eksponenti Mantisa

Përderisa shenja si informacion binar Po/Jo mund të nxirret lehtësisht, numri real formohet përmes ekuacionit
Mantisa * 2Eksponenti

Përveç kësaj, ka një sërë vlerash konstante që mbulojnë raste të veçanta numrave racional - përfshirë ±∞ dhe NaN ("nuk është një numër i vlefshëm").

Vlerat me pikë lëvizëse janë veçanërisht të dobishme kur përshtatshmëria nuk është aq e rëndësishme, pasi me këtë lloj vlerash ndodhin patjetër gabime në rrethim dhe kështu humbje saktësie. Zakonisht, vlerat me pikë lëvizëse përdoren, për shembull, për përcaktimin e koordinatave, si vektorët Vertex në modelet 3D ose kurbat Bézier/Spline për qëllime të përfaqësimit optik.

Në formatet e të dhënave, vlerat me pikë lëvizëse spesifikohen si float(Mantisa, Eksponenti).
Nëse përdoret një format që shkëputet nga IEEE 754, kjo jepet përkatësisht.