Kompiuteriai veikia naudodami dvejetainį kodą, kalbą, sudarytą iš 0s ir 1s . Šis dvejetainis kodas sudaro visų kompiuterio operacijų pagrindą, leidžiantį viską nuo vaizdo įrašų pateikimo iki sudėtingų algoritmų apdorojimo. Vienas bitas yra a 0 arba a 1 , o aštuoni bitai sudaro baitą. Nors kai kurie duomenys, pvz., tam tikri anglų kalbos simboliai, gali būti pavaizduoti vienu baitu, kitiems duomenų tipams reikia kelių baitų. Sąvoka endiškumas yra labai svarbus norint suprasti, kaip kompiuteriai skaito ir interpretuoja šiuos baitus.
Kas yra Endianizmas?
Endianiškumas nurodo tvarką, kuria baitai išdėstomi atmintyje. Įvairios kalbos skaito savo tekstą skirtinga tvarka. pavyzdžiui, angliškai skaitoma iš kairės į dešinę, o arabiškai – iš dešinės į kairę. Endianiškumas panašiai veikia ir kompiuteriuose. Jei vienas kompiuteris skaito baitus iš kairės į dešinę, o kitas – iš dešinės į kairę, problemų kyla, kai šiems kompiuteriams reikia susisiekti.
Endianness užtikrina, kad kompiuterio atmintyje esantys baitai būtų nuskaitomi tam tikra tvarka. Kiekviena kompiuterinė sistema iš vidaus atitinka savo duomenis, tačiau atsiradus internetui, dalijamasi duomenimis daugiau nei bet kada anksčiau, o ne visos sistemos skaito duomenis ta pačia tvarka.
Endianness būna dviejų pirminių formų: Big-endian (BE) ir Little-endian (LE).
- Big-endianas (BE) : pirmiausia išsaugomas reikšmingiausias baitas (didysis galas). Tai reiškia, kad pirmasis baitas (mažiausiu atminties adresu) yra didžiausias, o tai yra prasmingiausia žmonėms, skaitantiems iš kairės į dešinę.
- Little-endian (LE) : pirmiausia išsaugomas mažiausiai reikšmingas baitas (mažasis galas). Tai reiškia, kad pirmasis baitas (mažiausiu atminties adresu) yra mažiausias, o tai yra prasmingiausia žmonėms, skaitantiems iš dešinės į kairę.
Kas yra Bigendianas?
Didelėje sistemoje, reikšmingiausias baitas (MSB) yra saugomas žemiausiu atminties adresu. Tai reiškia, kad didžiausias tikslas (svarbiausia duomenų dalis) yra pirmiausia. Pavyzdžiui, 32 bitų sveikasis skaičius0x12345678>būtų saugomi atmintyje taip, kaip yra didelėje sistemoje:
„Big-endian“ atstovybė
Address: 00 01 02 03 Data: 12 34 56 78>
Čia 0x12 yra reikšmingiausias baitas, dedamas žemiausiu adresu ( 00 ), po kurio seka 0x34, 0x56, ir 0x78 aukščiausiu adresu ( 03 ).
Kas yra Little-endian?
Nedidelė sistema saugo mažiausiai reikšmingas baitas (LSB) žemiausiu atminties adresu. Mažoji pabaiga (mažiausia duomenų dalis) yra pirmiausia. Tam pačiam 32 bitų sveikajam skaičiui0x12345678>, nedidelė sistema jį saugotų kaip:
Java sąrašo metodaiLittle-endian atstovybė
Address: 00 01 02 03 Data: 78 56 34 12>
Čia 0x78> yra mažiausiai reikšmingas baitas, patalpintas žemiausiu adresu ( 00 ), po kurio seka 0x56> , 0x34> , ir 0x12> aukščiausiu adresu ( 03 ).
Svarbiausio baito (MSbyte) reikšmė Little and Big Endian:
Suprasti sąvoką Svarbiausias baitas (MSbyte) padeda dar labiau išsiaiškinti endiškumą. Iliustracijai naudokime dešimtainį skaičių.
Apsvarstykite dešimtainį skaičių 2 984. Pakeitus skaitmenį 4 į 5, skaičius padidinamas 1, o pakeitus skaitmenį 2 į 3 skaičius padidinamas 1 000. Ši koncepcija taip pat taikoma baitams ir bitams.
- Svarbiausias baitas (MSbyte) : baitas, kuriame yra didžiausia pozicijos reikšmė.
- Mažiausias baitas (LSbyte) : baitas, kuriame yra mažiausia pozicijos reikšmė.
Big-endian formatu pirmiausia išsaugomas MSbyte. Mažame formate MSbyte saugomas paskutinis.
Kada gali kilti problemų dėl endianizmo?
Įvairiuose skaičiavimo scenarijuose reikia atsižvelgti į endianiškumą, ypač kai sistemoms su skirtingomis baitų eilėmis reikia susisiekti arba dalytis duomenimis.
- Unikodo simboliai: „Unicode“ simbolių rinkinys, universalus visuose įrenginiuose, naudoja specialią simbolių baitų seką, vadinamą „ Byte Order Mark (BOM). The GERAI informuoja sistemą, kad įeinantis srautas yra Unicode, nurodo, kokia Unicode simbolių koduotė naudojama, ir nurodo įeinančio srauto endian tvarką.
- Programavimo kalbos: Kai kurios programavimo kalbos reikalauja nurodyti baitų eilės seką. Pavyzdžiui, į Swift , naudojama iOS plėtrą, galite nustatyti, ar duomenys yra saugomi didžiagalvis arba Mažasis formatas .
- Tinklo protokolai: Istoriškai atsirado skirtingi protokolai, todėl atsirado poreikis sąveikauti. Big-endianas yra dominuojanti tvarka tinklo protokoluose ir vadinama tinklo tvarka. Ir atvirkščiai, dauguma kompiuterių naudoja Mažasis-endianas formatu. Šių formatų sąveikos užtikrinimas yra labai svarbus tinklo ryšiui.
- Procesoriaus dizainas: Procesoriai gali būti suprojektuoti taip, kad būtų Mažasis, didysis, arba bi-endianas (gali valdyti abu). Vartotojų pasirinkimas ir iš to kylančios rinkos tendencijos turėjo įtakos tam, kas šiandien kompiuterinėse sistemose laikoma įprasta.
Kodėl Endianness yra problema?
Endianiškumas tampa problema pirmiausia dėl skirtingų sistemų ir protokolų sąveikos. Istorinis protokolo kūrimas lėmė skirtingas baitų eilės taisykles, todėl norint suderinti duomenis reikėjo konvertuoti duomenis. Aukštesnio lygio kalbose ir abstrakčiose aplinkose endianiškumas dažnai valdomas užkulisiuose, todėl kūrėjams nereikia rūpintis. Tačiau norint suprasti žemo lygio programavimą, tinklo protokolų kūrimą ir duomenų sąveiką, labai svarbu suprasti endianiškumą.
Išvada
Endianiškumas yra tai, kaip baitai išdėstomi kompiuterio duomenyse. Big-endianas ir Mažasis-endianas yra du baitų išdėstymo būdai, kurių kiekvienas turi pranašumų. Suprasti endialumą yra labai svarbu kūrėjams, dirbantiems su žemo lygio duomenimis, tinklų kūrimu ir sistemų sąveika. Nors Mažasis-endianas yra įprastas, abu formatai išlieka svarbūs tobulėjant technologijoms. Siekiant užtikrinti suderinamumą ir našumą, bus toliau plėtojamos duomenų valdymo pagal galutinius susitarimus strategijos.
string n java