logo

Kas ir endianness? Big-Endian & Little-Endian

Datori darbojas, izmantojot bināro kodu, valodu, kas sastāv no 0s un 1s . Šis binārais kods veido visu datora darbību pamatu, nodrošinot visu, sākot no video renderēšanas līdz sarežģītu algoritmu apstrādei. Viens bits ir a 0 vai a 1 , un astoņi biti veido baitu. Lai gan dažus datus, piemēram, noteiktas angļu rakstzīmes, var attēlot ar vienu baitu, citiem datu veidiem ir nepieciešami vairāki baiti. Jēdziens par endialitāte ir ļoti svarīgi, lai saprastu, kā datori nolasa un interpretē šos baitus.

Kas ir endianness?

Endiānisms attiecas uz secību, kādā baiti ir sakārtoti atmiņā. Dažādas valodas lasīja savus tekstus atšķirīgā secībā. piemēram, angļu valodā lasa no kreisās puses uz labo, bet arābu valodā no labās uz kreiso. Endiānisms līdzīgi darbojas arī datoriem. Ja viens dators nolasa baitus no kreisās puses uz labo un cits no labās puses uz kreiso, problēmas rodas, kad šiem datoriem ir jāsazinās.



Endianness nodrošina, ka baiti datora atmiņā tiek nolasīti noteiktā secībā. Katra datorsistēma iekšēji atbilst saviem datiem, taču interneta parādīšanās ir radījusi vairāk datu koplietošanas nekā jebkad agrāk, un ne visas sistēmas nolasa datus tādā pašā secībā.

Endiānismam ir divas primārās formas: Big-endian (BE) un Little-endian (LE).

  • Big-endian (BE) : vispirms saglabā nozīmīgāko baitu (lielo galu). Tas nozīmē, ka pirmais baits (zemākajā atmiņas adresē) ir lielākais, kas ir vispiemērotākais cilvēkiem, kuri lasa no kreisās uz labo pusi.
  • Little-endian (LE) : vispirms saglabā vismazāko baitu (mazo galu). Tas nozīmē, ka pirmais baits (zemākajā atmiņas adresē) ir mazākais, kas ir vispiemērotākais cilvēkiem, kuri lasa no labās puses uz kreiso.

Kas ir Bigendian?

Lielajā sistēmā, nozīmīgākais baits (MSB) tiek saglabāts zemākajā atmiņas adresē. Tas nozīmē, ka lielais beigas (nozīmīgākā datu daļa) ir pirmajā vietā. Piemēram, 32 bitu vesels skaitlis0x12345678>lielajā sistēmā tiktu saglabāti atmiņā šādi:



Big-endian pārstāvniecība
Address: 00 01 02 03 Data: 12 34 56 78>

Šeit, 0x12 ir visnozīmīgākais baits, kas atrodas zemākajā adresē ( 00 ), kam seko 0x34, 0x56, un 0x78 augstākajā adresē ( 03 ).

Kas ir Little-endian?

Neliela sistēma saglabā vismazāk nozīmīgais baits (LSB) zemākajā atmiņas adresē. Mazais gals (mazākā datu daļa) ir pirmajā vietā. Tam pašam 32 bitu veselam skaitlim0x12345678>, neliela sistēma to saglabātu šādi:

Little-endian pārstāvniecība
Address: 00 01 02 03 Data: 78 56 34 12>

Šeit, 0x78> ir vismazāk nozīmīgais baits, kas atrodas zemākajā adresē ( 00 ), kam seko 0x56> , 0x34> , un 0x12> augstākajā adresē ( 03 ).



Nozīmīgākā baita (MSbyte) nozīme mazajā un lielajā endiānā:

Izpratne par jēdzienu Nozīmīgākais baits (MSbyte) palīdz vēl vairāk noskaidrot endialitāti. Lai ilustrētu, izmantosim decimālskaitli.

Apsveriet decimālskaitli 2,984. Mainot ciparu 4 pret 5, skaitlis palielinās par 1, savukārt, mainot ciparu 2 pret 3, skaitlis palielinās par 1000. Šis jēdziens attiecas arī uz baitiem un bitiem.

  • Nozīmīgākais baits (MSbyte) : baits, kurā ir visaugstākā pozīcijas vērtība.
  • Mazāk nozīmīgais baits (LSbaits) : baits, kurā ir zemākā pozīcijas vērtība.

Big-endian formātā vispirms tiek saglabāts MSbaits. Mazajā formātā MSbaits tiek saglabāts pēdējais.

Kad endianness varētu būt problēma?

Endianitāte ir jāņem vērā dažādos skaitļošanas scenārijos, jo īpaši, ja sistēmām ar atšķirīgu baitu secību ir jāsazinās vai jādala dati.

  1. Unikoda rakstzīmes: Unicode, rakstzīmju kopa, ko plaši izmanto visās ierīcēs, izmanto īpašu rakstzīmju baitu secību, ko sauc par Baitu secības atzīme (BOM). The LABI informē sistēmu, ka ienākošā straume ir Unicode, norāda, kurš unikoda rakstzīmju kodējums tiek izmantots, un norāda ienākošās straumes gala secību.
  2. Programmēšanas valodas: Dažām programmēšanas valodām ir jānorāda baitu secības secība. Piemēram, iekšā Swift , izmanto iOS izstrādi, varat definēt, vai dati tiek glabāti big-endian vai mazais formāts .
  3. Tīkla protokoli: Vēsturiski ir radušies dažādi protokoli, kas radīja nepieciešamību pēc mijiedarbības. Big-endian ir dominējošā secība tīkla protokolos un tiek saukta par tīkla secību. Un otrādi, lielākā daļa datoru izmanto mazais-endians formātā. Tīkla saziņā ir ļoti svarīgi nodrošināt šo formātu savietojamību.
  4. Procesora dizains: Procesorus var veidot tā, lai tie būtu vai nu mazais endians, lielais endians, vai bi-endian (spēj tikt galā ar abiem). Patērētāju izvēle un no tām izrietošās tirgus tendences ir ietekmējušas to, kas mūsdienās tiek uzskatīts par normālu datorsistēmās.

Kāpēc endianness ir problēma?

Endiānisms kļūst par problēmu galvenokārt dažādu sistēmu un protokolu mijiedarbības dēļ. Vēsturiskā protokola izstrāde noveda pie dažādām baitu secības konvencijām, tāpēc savietojamībai bija nepieciešama datu konvertēšana. Augstāka līmeņa valodās un abstrahētā vidē endianness bieži tiek pārvaldīts aizkulisēs, samazinot vajadzību rūpēties par izstrādātāju. Tomēr zema līmeņa programmēšanai, tīkla protokolu izstrādei un datu savietojamībai joprojām ir ļoti svarīga izpratne par endialitāti.

Secinājums

Endiānisms ir veids, kā baiti tiek sakārtoti datora datos. Big-endian un mazais-endians ir divi veidi, kā sakārtot baitus, un katram ir savas priekšrocības. Izpratne par pilnīgumu ir ļoti svarīga izstrādātājiem, kas nodarbojas ar zema līmeņa datiem, tīklu veidošanu un sistēmu savietojamību. Kamēr mazais-endians ir izplatīts, abi formāti joprojām ir svarīgi, attīstoties tehnoloģijai. Lai nodrošinātu saderību un veiktspēju, turpināsies datu pārvaldības stratēģijas, kas tiek izmantotas visdažādākajās konvencijās.