Lisätietoja Lohkon Otsikosta
Ennen kuin voimme siirtyä tarkastelemaan lohkon otsikkoa yksityiskohtaisesti, meidän tulee ensin ymmärtää ero big endian- ja little endian -muotojen välillä.
Little Endian ja Big Endian
Ensiksi on ymmärrettävä, mitä endian-järjestys tarkoittaa.
Endianness tarkoittaa järjestystä, jossa tavut (yksi tavu on 8 bittiä) asetetaan suurempiin tietotyyppeihin tietokoneen muistissa.
Big endian -muoto tallentaa merkitsevimmän tavun ensin, mikä vastaa tapaa, jolla ihmiset yleensä lukevat numeroita. Käytetään esimerkkinä desimaalilukua 234567890 ja muunnetaan se heksadesimaali- ja binaarimuotoon käyttäen Pythonia ja tulostetaan tulokset:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Koska tietokoneet tallentavat kokonaislukuja kokonaisina tavuina, ja jokainen 2 heksadesimaalista numeroa vastaa yhtä tavua, tarvitsemme parillisen määrän numeroita. Lukumme heksadesimaaliesitys, 0xDFB38D2, sisältää 7 numeroa, joten meidän täytyy lisätä nolla 0 vasemmalle. Lopullinen luku, 0x0DFB38D2, sisältää nyt 8 heksadesimaalista numeroa (mahtuu tarkalleen 4 tavuun) ja on arvoltaan sama.
Vastaavasti binaarilukumme sisältää 28 bittiä, ja jokainen 8 bittiä vastaa 1 tavua, joten tarvitsemme bittien määrän jaolliseksi 8:lla lisäämällä 4 nollaa 0 vasemmalle. Lopullinen luku, 0b00001101111110110011100011010010, sisältää nyt 32 bittiä (mahtuu tarkalleen 4 tavuun) ja on arvoltaan sama.
Pythonilla saimme big endian -muodon, jonka saisimme myös manuaalisesti muunnettaessa, ja lukumme näyttää seuraavalta:
0x0DFB38D2heksadesimaalimuodossa;0b00001101111110110011100011010010binaarimuodossa.
Tutustutaan alla olevaan taulukkoon ymmärtääksemme big endian -muotoa:
Vastaavasti little endian -muoto tallentaa vähiten merkitsevän tavun ensin, mikä kääntää järjestyksen päinvastaiseksi kuin intuitiivisesti odottaisi:
Kuten huomaat, lukumme little endian -muodossa näyttää seuraavalta:
-
0xD238FB0Dheksadesimaalina; -
0b11010010001110001111101100001101binaarina.
Takaisin lohkon otsikkoon
Kerrataan: otsikko on tarkalleen 80 tavua ja sisältää kuusi tietokenttää, joista jokainen on little endian -muodossa. Tarkastellaan nyt lohkon 645536 otsikkoa:
Koska lohkon otsikko vie tarkalleen 80 tavua, siinä on täsmälleen 160 heksadesimaalimerkkiä (jokainen tavu vastaa kahta heksadesimaalimerkkiä). Esimerkiksi version-kenttä vie 4 tavua, joten siinä on 8 heksadesimaalimerkkiä.
Tässä on yksityiskohtaiset tiedot tästä lohkosta explorerissa:
Kentät on tässä esitetty big endian -muodossa. Tarkastellaan esimerkiksi bits-kenttää ja verrataan sitä sen esitykseen lohkon otsikossa. Sen heksadesimaaliesitys on 0x171007ea big endian -muodossa:
Jos muunnetaan se little endian -muotoon, se näyttää seuraavalta:
Kuten näet, juuri nämä tiedot löytyvät lohkon otsikosta.
1. Mihin "endianness" viittaa lohkoketjujen ja tietokonejärjestelmien yhteydessä?
2. Yhdistä lohkon komponentit niiden määritelmiin.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Can you explain why little endian is used in the block header?
How do I convert other fields from little endian to big endian?
What is the significance of the "bits" field in the block header?
Awesome!
Completion rate improved to 6.25
Lisätietoja Lohkon Otsikosta
Pyyhkäise näyttääksesi valikon
Ennen kuin voimme siirtyä tarkastelemaan lohkon otsikkoa yksityiskohtaisesti, meidän tulee ensin ymmärtää ero big endian- ja little endian -muotojen välillä.
Little Endian ja Big Endian
Ensiksi on ymmärrettävä, mitä endian-järjestys tarkoittaa.
Endianness tarkoittaa järjestystä, jossa tavut (yksi tavu on 8 bittiä) asetetaan suurempiin tietotyyppeihin tietokoneen muistissa.
Big endian -muoto tallentaa merkitsevimmän tavun ensin, mikä vastaa tapaa, jolla ihmiset yleensä lukevat numeroita. Käytetään esimerkkinä desimaalilukua 234567890 ja muunnetaan se heksadesimaali- ja binaarimuotoon käyttäen Pythonia ja tulostetaan tulokset:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Koska tietokoneet tallentavat kokonaislukuja kokonaisina tavuina, ja jokainen 2 heksadesimaalista numeroa vastaa yhtä tavua, tarvitsemme parillisen määrän numeroita. Lukumme heksadesimaaliesitys, 0xDFB38D2, sisältää 7 numeroa, joten meidän täytyy lisätä nolla 0 vasemmalle. Lopullinen luku, 0x0DFB38D2, sisältää nyt 8 heksadesimaalista numeroa (mahtuu tarkalleen 4 tavuun) ja on arvoltaan sama.
Vastaavasti binaarilukumme sisältää 28 bittiä, ja jokainen 8 bittiä vastaa 1 tavua, joten tarvitsemme bittien määrän jaolliseksi 8:lla lisäämällä 4 nollaa 0 vasemmalle. Lopullinen luku, 0b00001101111110110011100011010010, sisältää nyt 32 bittiä (mahtuu tarkalleen 4 tavuun) ja on arvoltaan sama.
Pythonilla saimme big endian -muodon, jonka saisimme myös manuaalisesti muunnettaessa, ja lukumme näyttää seuraavalta:
0x0DFB38D2heksadesimaalimuodossa;0b00001101111110110011100011010010binaarimuodossa.
Tutustutaan alla olevaan taulukkoon ymmärtääksemme big endian -muotoa:
Vastaavasti little endian -muoto tallentaa vähiten merkitsevän tavun ensin, mikä kääntää järjestyksen päinvastaiseksi kuin intuitiivisesti odottaisi:
Kuten huomaat, lukumme little endian -muodossa näyttää seuraavalta:
-
0xD238FB0Dheksadesimaalina; -
0b11010010001110001111101100001101binaarina.
Takaisin lohkon otsikkoon
Kerrataan: otsikko on tarkalleen 80 tavua ja sisältää kuusi tietokenttää, joista jokainen on little endian -muodossa. Tarkastellaan nyt lohkon 645536 otsikkoa:
Koska lohkon otsikko vie tarkalleen 80 tavua, siinä on täsmälleen 160 heksadesimaalimerkkiä (jokainen tavu vastaa kahta heksadesimaalimerkkiä). Esimerkiksi version-kenttä vie 4 tavua, joten siinä on 8 heksadesimaalimerkkiä.
Tässä on yksityiskohtaiset tiedot tästä lohkosta explorerissa:
Kentät on tässä esitetty big endian -muodossa. Tarkastellaan esimerkiksi bits-kenttää ja verrataan sitä sen esitykseen lohkon otsikossa. Sen heksadesimaaliesitys on 0x171007ea big endian -muodossa:
Jos muunnetaan se little endian -muotoon, se näyttää seuraavalta:
Kuten näet, juuri nämä tiedot löytyvät lohkon otsikosta.
1. Mihin "endianness" viittaa lohkoketjujen ja tietokonejärjestelmien yhteydessä?
2. Yhdistä lohkon komponentit niiden määritelmiin.
Kiitos palautteestasi!