„Všechno jsou to jedničky a nuly.“ Lidé to říkají, když si dělají legraci nebo sarkastickou poznámku. Pokud jde o myšlení počítačů, je to skutečně pravda. A na úrovni hardwaru je to všechno. Procesor, paměť, různé formy úložišť, USB, HDMI a síťová připojení spolu se vším ostatním v tom mobilním telefonu, tabletu, notebooku nebo stolním počítači používají pouze jedničky a nuly. Seskupení jedniček a nul zajišťují bajty. Jsou tedy velkým pomocníkem při jejich organizaci. Podívejme se, jak to dělají.
Bajty jsou měrnou jednotkou pro data a programy uložené a používané v počítači. Ačkoli bajt existuje v historii počítačů již dlouho a měl několik podob, jeho současná 8bitová délka je dobře ustálená. Vezmeme-li je jednotlivě nebo jako sousedící skupiny, jsou bajty obecně uznávaným nejběžnějším způsobem, jak jsou bity v počítači uspořádány.
Takže co je to bit? Bit je binární číslice; to znamená, že může nabývat pouze dvou hodnot. V počítačích mohou mít bity dvě hodnoty: nulu (0) a jedničku (1). To je vše, žádné další možnosti. Bajt je pouze osm binárních bitů, které dohromady představují binární čísla. Prostřednictvím různých kódovacích schémat mohou čísla reprezentovat celou řadu dalších věcí, například znaky, kterými píšeme.
Následující tabulka ukazuje jeden velkoendiánský bajt s vyznačením jednotlivých bitů tohoto bajtu a jim přiřazených mocnin dvou. Všechny bajty dat jsou ve formátu Big-Endian. Existují i další bajty, například programový kód, kde se endiánské formátování neuplatňuje. Pro informaci jsou u každého bitu uvedeny desítkové hodnoty jednotlivých mocnin dvou. Představte si, že mezi bitem 3 a bitem 4 je řádek, kde je bajt rozdělen do čtyř skupin bitů zvaných Nibbles. Little-Endian je velmi často používaný formát bajtu. Zůstaňte naladěni na další informace o endiánech. Pokud vás zajímá název, vyhledejte si ho na (etymologie slova endian).
Jeden big-endiánský bajt:
Bit0 | Bit1 | Bit2 | Bit3 | Bit4 | Bit5 | Bit6 | Bit7 | |
Power of 2 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 21 |
Desetinná hodnota | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Každý nibble bajtu může obsahovat čtyřbitové binární číslo, jak ukazuje následující tabulka. Pokud je bit nastaven na „1“, přičítá se k hodnotě nibblu tato mocnina dvou. Pokud je bit nastaven na „0“, mocnina dvou se k hodnotě nibble nepřičítá. Bajt, který je tvořen dvěma nibbly, může obsahovat dvoumístné hexadecimální číslo. Bity jsou skutečně vše, co může počítač používat. Programátoři a inženýři vyvíjející počítačový hardware používají šestnáctkovou soustavu, aby si usnadnili práci s bity. V níže uvedené tabulce je nejvýznamnější bit vlevo 20, 21, 22, 23
Jedna velká jednička:
Binární číslo |
Hexidecimální hodnota |
0000 | 0 |
0001 | 1 |
0010 | 2 |
0011 | 3 |
0100 | 4 |
0101 | 5 |
0110 | 6 |
0111 | 7 |
1000 | 8 |
1001 | 9 |
1010 | A |
1011 | B |
1100 | C |
1101 | D |
1110 | E |
1111 | F |
Vysvětlím Velký-Endian počínaje jednobajtovým diagramem. Delší čáry na konci tohoto rámečku jsou hranice bajtu, takže kdybyste kreslili skupinu sousedních bajtů, bylo by jasné, kde jeden bajt končí a druhý začíná. Malé čáry rozdělují rámec na jednotlivá místa, kde lze zobrazit každý z osmi bitů. Střední čára uprostřed rozděluje bajt na dvě stejné čtyřbitové části, což jsou vsuvky. Nibble mají také dlouhou a pestrou historii. Nikdy jsem se nesetkal s tím, že by byly standardizovány. Nicméně současný ustálený názor je, že nibbles jsou skupiny čtyř bitů, jak jsem je zobrazil níže. Všechny tyto čáry existují pouze tak, že lidé kreslí bajty. V počítači tyto čáry neexistují.
Horní nibble a dolní nibble jsou značky, jak by se používaly v bigendovém bajtu. V Big-Endian je nejvýznamnější číslice na levém konci čísla. Lower Nibble je tedy nejméně významná polovina čísla v bajtu. Stejně tak nejméně významný bit je na pravé straně LSBit (obvykle označovaný jako LSB) znamená Least Significant Bit. A nejvýznamnější bit je vlevo. Horní nibble vlevo je nejvýznamnější polovina čísla. MSBit (obvykle označovaný jako MSB) je nejvýznamnější bit. Je to stejné, jako když zapisujeme desetinná čísla s nejvýznamnější číslicí vlevo. Říká se tomu Big-Endian, protože „velký konec“ čísla je na prvním místě.
Díky tomu, že bajt je schopen pojmout dvě šestnáctkové číslice, může bajt obsahovat šestnáctková čísla v rozsahu 00 až FF (0 až 255 v desítkové soustavě) Pokud tedy používáte bajty k reprezentaci znaků lidsky čitelného jazyka, stačí každému znaku, interpunkčnímu znaménku atd. přiřadit číslo. (Pak samozřejmě přimějte všechny, aby souhlasili s kódováním, které jste vymysleli.) To je pouze jedno z použití bajtů. Byty se používají také jako kód programů, které váš počítač spouští, čísla pro různá data, která můžete mít, a všechno ostatní, co obývá počítač v procesoru, paměti, úložišti nebo se přibližuje na různých sběrnicích a portech rozhraní.
Jak se ukázalo, existují dva běžně používané formáty bajtů. V předchozích příkladech byl použit Little-Endian. Jeho vlastností je, že nejvýznamnější číslice je vlevo a nejméně významná číslice vpravo.
Existuje také formát zvaný Little-Endian. Jak se dalo očekávat, je opakem Big-Endian s nejméně významnou číslicí vlevo a nejvýznamnější číslicí vpravo. Je to opak toho, jak zapisujeme desetinná čísla. Little-Endian se nepoužívá pro pořadí bitů v bajtu, ale používá se pro pořadí bajtů ve větší struktuře. Například: Velké číslo obsažené v Little-Endian Wordu o dvou bajtech by mělo nejméně významný bajt vlevo. Pokud by dvoubajtové číslo bylo v Big-Endian, nejvýznamnější bajt by byl vpravo. Little-Endian se používá pouze v kontextu dlouhých vícebajtových čísel k nastavení pořadí významnosti bajtů ve větší datové struktuře.
Existují důvody pro používání jak Big, tak Little uspořádání bajtů a masité důvody přesahují rámec tohoto článku. V mikroprocesorech se však obvykle používá Little-Endian. Procesory x86-64 ve většině osobních počítačů používají Little-Endian formát bajtů. Ačkoli pozdější generace mají speciální instrukce, které umožňují omezené použití formátu Big-Endian. Formát Big-Endian byte je široce používán v sítích a zejména v těch velkých Z počítačích. Nyní nejste nutně omezeni na jeden nebo druhý. Novější procesory ARM mohou používat oba endiánské formáty. Zařízení jako mikroprocesory, které mohou používat jak Big-Endian, tak Little Endian uspořádání bajtů, se někdy označují jako Bi-Endian.
No, někdy opravdu potřebujete více než jeden bajt pro uložení čísla. Za tímto účelem jsou k dispozici delší formáty, které se skládají z více bajtů. Například: Procesory x86-64 mají Words, což je 16 bitů nebo 2 bajty, které jsou shodou okolností seřazeny vedle sebe takříkajíc od hlavy k patě. Mají také Double Words (32 bitů nebo 4 bajty) a Quad Words (64 bitů nebo 8 bajtů). To jsou nyní jen příklady datových forem, které dává k dispozici hardware procesoru.
Programátoři pracující s jazyky mají mnohem více možností, jak uspořádat bity a bajty. Když je program připraven, překladač nebo jiný mechanismus převede způsob, jakým má program uspořádány bity a bajty, do datových forem, se kterými si hardware procesoru poradí.