Tietokoneet toimivat binäärikoodilla, kielellä, joka koostuu 0s ja 1s . Tämä binäärikoodi muodostaa perustan kaikille tietokoneen toiminnoille, mikä mahdollistaa kaiken videoiden hahmontamisesta monimutkaisten algoritmien käsittelyyn. Yksi bitti on a 0 tai a 1 , ja kahdeksan bittiä muodostavat tavun. Vaikka jotkin tiedot, kuten tietyt englanninkieliset merkit, voidaan esittää yhdellä tavulla, muut tietotyypit vaativat useita tavuja. Käsite endianisuus on ratkaisevan tärkeää sen ymmärtämisessä, kuinka tietokoneet lukevat ja tulkitsevat näitä tavuja.
Mikä on endianness?
Endianness viittaa järjestykseen, johon tavut on järjestetty muistissa. Eri kielet lukevat tekstinsä eri järjestyksessä. esimerkiksi englanti lukee vasemmalta oikealle, kun taas arabia lukee oikealta vasemmalle. Endianness toimii samalla tavalla tietokoneilla. Jos yksi tietokone lukee tavuja vasemmalta oikealle ja toinen oikealta vasemmalle, ongelmia ilmenee, kun näiden tietokoneiden on oltava yhteydessä toisiinsa.
Endianness varmistaa, että tietokoneen muistissa olevat tavut luetaan tietyssä järjestyksessä. Jokainen tietokonejärjestelmä on sisäisesti yhdenmukainen omien tietojensa kanssa, mutta Internetin tulo on johtanut enemmän tiedon jakamiseen kuin koskaan ennen, eivätkä kaikki järjestelmät lue tietoja samassa järjestyksessä.
Endianness tulee kahdessa päämuodossa: Big-endian (BE) ja Little-endian (LE).
- Big-endian (BE) : Tallentaa merkitsevimmän tavun (isopää) ensin. Tämä tarkoittaa, että ensimmäinen tavu (alimmassa muistiosoitteessa) on suurin, mikä on järkevintä ihmisille, jotka lukevat vasemmalta oikealle.
- Little-endian (LE) : Tallentaa vähiten merkitsevän tavun (pienen pään) ensin. Tämä tarkoittaa, että ensimmäinen tavu (alimmassa muistiosoitteessa) on pienin, mikä on järkevin ihmisille, jotka lukevat oikealta vasemmalle.
Mikä on Big-endian?
Suuressa järjestelmässä merkittävin tavu (MSB) on tallennettu alimpaan muistiosoitteeseen. Tämä tarkoittaa, että iso loppu (merkittävin osa tiedoista) tulee ensin. Esimerkiksi 32-bittinen kokonaisluku0x12345678>tallennettaisiin muistiin seuraavasti big-endian-järjestelmässä:
Address: 00 01 02 03 Data: 12 34 56 78>
Tässä, 0x12 on merkittävin tavu, joka on sijoitettu alimpaan osoitteeseen ( 00 ), jonka jälkeen 0x34, 0x56, ja 0x78 korkeimmassa osoitteessa ( 03 ).
Mikä on Little-endian?
Pienikokoinen järjestelmä tallentaa vähiten merkitsevä tavu (LSB) alimmassa muistiosoitteessa. Pieni pää (vähiten merkittävä osa tiedosta) tulee ensin. Samalle 32-bittiselle kokonaisluvulle0x12345678>, pikkumainen järjestelmä tallentaisi sen seuraavasti:
Address: 00 01 02 03 Data: 78 56 34 12>
Tässä, 0x78> on vähiten merkitsevä tavu, sijoitettu alimpaan osoitteeseen ( 00 ), jonka jälkeen 0x56> , 0x34> , ja 0x12> korkeimmassa osoitteessa ( 03 ).
Merkittävimmän tavun (MSbyte) merkitys Little- ja Big Endianissa:
Käsitteen ymmärtäminen Merkittävin tavu (MStavu) auttaa selkeyttämään endianisuutta entisestään. Käytetään havainnollistamiseen desimaalilukua.
Harkitse desimaalilukua 2 984. Numeron 4 muuttaminen 5:ksi lisää lukua yhdellä, kun taas luvun 2 muuttaminen 3:ksi lisää numeroa 1 000:lla. Tämä käsite koskee myös tavuja ja bittejä.
- Merkittävin tavu (MStavu) : tavu, jolla on korkein sijaintiarvo.
- Vähiten merkitsevä tavu (LSbyte) : Tavu, joka sisältää alimman paikan arvon.
Big-endian-muodossa MSbyte tallennetaan ensin. Little-endian-muodossa MSbyte tallennetaan viimeisenä.
Milloin endianness voi olla ongelma?
Endianisuus on otettava huomioon erilaisissa laskentaskenaarioissa, erityisesti silloin, kun järjestelmien, joilla on eri tavujärjestys, on kommunikoida tai jakaa tietoja.
- Unicode-merkit: Unicode, merkistö, jota käytetään yleisesti kaikissa laitteissa, käyttää erityistä merkkitavusarjaa, jota kutsutaan nimellä Byte Order Mark (BOM). The HYVÄ ilmoittaa järjestelmälle, että saapuva virta on Unicode, määrittää, mitä Unicode-merkkikoodausta käytetään, ja ilmaisee saapuvan virran endian järjestyksen.
- Ohjelmointikielet: Jotkut ohjelmointikielet vaativat tavujärjestyksen määrittämistä. Esimerkiksi sisään Swift , käytetty iOS kehittämiseen, voit määrittää, tallennetaanko tietoja suurpäämies tai pienimuotoinen muoto .
- Verkkoprotokollat: Erilaisia protokollia on syntynyt historiallisesti, mikä on johtanut vuorovaikutuksen tarpeeseen. Big endian on verkkoprotokollien hallitseva järjestys ja sitä kutsutaan verkkojärjestykseksi. Sitä vastoin useimmat tietokoneet käyttävät pikku-endian muoto. Yhteentoimivuuden varmistaminen näiden formaattien välillä on ratkaisevan tärkeää verkkoviestinnässä.
- Prosessorin suunnittelu: Prosessorit voidaan suunnitella joko little-endian, big-endian, tai bi-endian (pystyy käsittelemään molempia). Kuluttajien valinnat ja niistä johtuvat markkinatrendit ovat vaikuttaneet siihen, mitä nykyään pidetään normaalina tietokonejärjestelmissä.
Miksi endianness on ongelma?
Endianness tulee ongelma ensisijaisesti eri järjestelmien ja protokollien välisen vuorovaikutuksen vuoksi. Historiallinen protokollakehitys johti vaihteleviin tavujärjestyskäytäntöihin, mikä vaati tietojen muuntamista yhteensopivuuden vuoksi. Korkeamman tason kielissä ja abstrakteissa ympäristöissä endianness hallitaan usein kulissien takana, mikä vähentää kehittäjien huolenpidon tarvetta. Endianisuuden ymmärtäminen on kuitenkin edelleen ratkaisevan tärkeää matalan tason ohjelmoinnin, verkkoprotokollan suunnittelun ja tietojen yhteentoimivuuden kannalta.
Johtopäätös
Endianness on tapa, jolla tavut järjestetään tietokoneen tiedoissa. Big endian ja pikku-endian ovat kaksi tapaa järjestää tavut, joista kummallakin on etuja. Endianisuuden ymmärtäminen on erittäin tärkeää kehittäjille, jotka käsittelevät matalan tason dataa, verkottumista ja järjestelmien yhteentoimivuutta. Sillä aikaa pikku-endian on yleistä, molemmat muodot ovat edelleen tärkeitä tekniikan kehittyessä. Strategioita tietojen hallintaan eri perinteisten käytäntöjen välillä kehitetään edelleen yhteensopivuuden ja suorituskyvyn varmistamiseksi.