Jak fungují bity a bajty v paměti počítače

2

Pokud vlastníte počítač déle, než je vaše přestávka na kávu, pravděpodobně jste se setkali s pojmy bity a bajty. Toto jsou standardní jednotky měření paměti RAM (Random Access Memory), kapacity pevného disku a velikosti souborů v jakémkoli moderním správci souborů.

Můžete slyšet reklamní tvrzení, že stroj je vybaven 32bitovým procesorem Pentium, má 64 megabajtů paměti RAM a 2,1 gigabajtů místa na pevném disku. Tyto specifikace se pravidelně objevují v technických příručkách a školicích materiálech. Pochopení toho, co tyto pojmy vlastně znamenají, vám pomůže přestat hádat a začít vědět jistě.

Desetinná čísla

Abyste pochopili, co je bit, porovnejte jej s něčím známým: čísla.

Číslice je jedna pozice pro hodnotu mezi 0 a 9. Kombinujeme je, abychom vytvořili větší čísla. Vezměme si číslo 6357. Skládá se ze čtyř číslic. Sedmička je v kategorii „jedniček“. Pětka je v kategorii desítek. Tři je v kategorii stovek. Šestka zaujímá kategorii „tisíce“.

To lze napsat explicitně:

(6 * 1000) + (3 * 100) + (5 * 10) + (7 * 1) = 6000 + 300 + 50 + 7 = 6357

Nebo použijte mocniny 10. Pomocí symbolu stříšky (^) k označení „do stupně“ to vypadá takto:

(6 * 10^3) + (3 * 10^2) + (5 * 10^1) + (10^0) = 6000 + 300 + 50 + 7 = 6357

Každá číslice je místo pro nejbližší vyšší mocninu 10. První číslice začíná 10^0.

Zdá se to normální, protože každý den používáme desetinný číselný systém. Pravděpodobně existuje, protože lidé mají deset prstů. Pokud bychom se vyvinuli s osmi prsty, pravděpodobně bychom použili osmičkovou soustavu. Lze použít libovolný číselný systém. Různé důvody dávají smysl v různých kontextech.

Počítače používají binární číselnou soustavu. Je také známý jako binární číselný systém.

Binární systém a 8bitový bajt

Počítače používají binární systém, protože je levný. Bylo by možné postavit počítač na desítkové soustavě. Jen by to bylo neuvěřitelně drahé. Binární hardware je relativně cenově dostupný.

Počítače tedy používají binární čísla. Místo desetinných míst používají binární číslice. Slovo bit je zkratka pro „Binary digIT“.

Desetinné číslice mají 10 hodnot: 0 až 9. Bity mají pouze dvě hodnoty: 0 a 1. Binární číslo je jednoduše řetězec jedniček a nul, například 1011.

Chcete-li zjistit hodnotu, použijte mocniny 2 místo mocnin 10.

(1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (1 * 2^0) = 8 + 0 + 2 + 1 = 11

Každý bit představuje rostoucí mocniny 2. Počítání v binárním kódu je jednoduché. Zde je srovnání desítkových a binárních čísel od 0 do 20:

  • 0 = 0
  • 1 = 1
  • 2 = 10
  • 3 = 11
  • 4 = 100
  • 5 = 101
  • 6 = 110
  • 7 = 111
  • 8 = 1000
  • 9 = 1001
  • 10 = 1010
  • 11 = 1011
  • 12 = 1100
  • 13 = 1101
  • 14 = 1110
  • 15 = 1111
  • 16 = 10 000
  • 17 = 10 001
  • 18 = 10010
  • 19 = 10011
  • 20 = 10100

Všimněte si přenosu výboje. Číslo 2 je poprvé, kdy binární systém používá carry. Pokud je bit 1 a přidáte 1, stane se 0 a další bit se stane 1. Přechod z 15 na 16 způsobí přetečení přes čtyři bity a změní 1111 na 10000.

Beats zřídka cestují sami. Jsou seskupeny do sad po 8 bitech. Tyto skupiny se nazývají bajty.

Proč je v bajtu osm bitů? Je to jako ptát se, proč je 12 vajec v tuctu. Lidé dospěli k 8 bitům metodou pokusů a omylů za posledních 50 let.

8 bitů může představovat 256 hodnot. Pohybují se od 0 do 255.

  • 0 = 00000000
  • 1 = 00000001
  • 2 = 00000010
    *…
  • 254 = 11111110
  • 255 = 11111111

V článku Jak fungují CD se dozvíte, že CD používá 2 bajty na vzorek. Toto je 16 bitů. Každý vzorek se může pohybovat od 0 do 65

Jak ASCII a binární matematika ukládají vaše data

Text není kouzlo. To jsou jen čísla v masce.

Když píšete větu, počítač písmena nevidí. Vidí binární hodnoty. Konkrétně se spoléhá na standardní znakovou sadu ASCII, která přeměňuje stisknuté klávesy na data. V tomto systému je každá binární hodnota od 0 do 127 mapována na určitý znak. Většina systémů rozšiřuje tuto sadu na 256 hodnot pomocí celého bajtu a přidává písmena s diakritikou a symboly pro mezinárodní jazyky.

Ale základ je položen v prvních 128 kódech.

Vezměte textový editor Poznámkový blok ve Windows 95/98. Pokud napíšete „Před čtyřmi skóre a sedmi lety“, program přidělí přesně jeden bajt paměti pro každý znak. To zahrnuje mezery mezi slovy. Mezera je ASCII kód 32. Perioda je 46. Písmeno ‘A’ je 65.

Zkuste to sami.

Vytvořte soubor s názvem getty.txt. Napište tuto větu. Uložte to. Otevřete Průzkumník souborů. Velikost souboru je 30 bajtů. Proč? Protože má 30 znaků. Přidejte jedno slovo. Velikost souboru se zvýší o počet písmen v daném slově. Jedná se o přímý poměr 1:1.

Otevřete soubor jako nezpracovaná data a písmena zmizí. Uvidíte čísla.

Toto jsou dekadické reprezentace ASCII kódů. Pro technickou přesnost: stroj vidí pouze binární kód. 32 se změní na „00100000“. Ale logika zůstává stejná: každý bajt obsahuje jeden znak.

Prvních 32 hodnot (0 až 31) nejsou písmena. Toto jsou kontrolní kódy. Návrat vozíku. Posuv řádku. Zvuky signálu. Tisknutelné znaky začínají 32. Po nich následují interpunkční znaménka. Pak čísla. Pak velká písmena. Pak malá písmena. Úplnou tabulku najdete na Unicode.org, ale princip je jednoduchý: uložení textu je pouze seznam těchto celých čísel.

Pochopení bajtových prefixů a binární matematiky

Jakmile si uvědomíte, že data jsou pouhé bajty, narazíte na nový problém: měřítko.

Bajt nestačí. Většina souborů je obrovská. Proto potřebujeme konzole.

K označení řádové velikosti používáme byte prefixy. Kilo, mega, giga. Nejsou to jen marketingové termíny. Jedná se o binární multiplikátory.

  • Kilo (K): 2 $^{10}$ = 1 024 bajtů
  • Mega (M): 2 $^{20}$ = 1 048 576 bajtů
    Giga (G): 2 $^{30}$ = 1 073 741 824 bajtů
  • Tera (T): 2 $^{40}$ = ~1,1 bilionu bajtů
  • Peta (P): 2 $^{50}$ = ~1,1 kvadrilionu bajtů
  • Exa (E): 2 $^{60}$ = ~1,1 kvintilionů bajtů
    Zetta (Z): $2^{70}$
  • Yotta (Y): $2^{80}$

Kilo je přibližně tisíc. Mega – milion. Giga – miliarda.

Když někdo říká, že jeho pevný disk je „2 gigabajty“, myslí tím $2 \krát 2^{30}$ bajtů. Přesně 2 147 483 648 bajtů.

To zní abstraktně, dokud si tato data nezobrazíte. Standardní CD pojme asi 650 megabajtů. Tři disky zaplňují 2GB disk. Běžné jsou databáze o velikosti terabajtů. Databáze o velikosti petabajtů pravděpodobně existují ve velkých vládních agenturách. Rozsah roste exponenciálně.

Tím se dostáváme k binární matematice.

Funguje stejně jako desítkové, s jedním přísným omezením: každý bit může být pouze 0 nebo 1.

V desítkové soustavě počítáme od 0 do 9. Když dosáhneme 9 a přidáme 1, přeneseme 1 na další místo. Ve dvojkové soustavě vše funguje stejně, ale přenos je rychlejší.

Vezměme si desetinné sčítání:

Začínáme zprava. $2+1=3$. Další pořadí: $5+5=$10. Napište 0, přeneste 1. Dále: $4+7+1(převod)=12$. Napište 2, přeneste 1. Výsledek: $0+0+1=1$. Výsledek: 1203.

Nyní binární systém.

Pravý bit: $0+1=1$. Neexistuje žádný převod.
Druhý bit: $1+1=10$. Napište 0, přeneste 1.
Třetí bit: $0+1+1(přenést)=10$. Napište 0, přeneste 1.
Čtvrtý bit: $0+0+1(přenést)=1$.

Výsledek je “1001”. V desítkové soustavě je to 9. Matematika je totožná. Jde jen o to, že reprezentace je založena na číselné soustavě se základem 2 místo 10.

Shrnutí

Bity jsou binární číslice. Jsou rovny 0 nebo 1.
Bajty jsou skupiny po 8 bitech.
Text je jednoduše posloupnost bajtů mapovaných na kódy ASCII.
Velikost úložiště se měří v binárních mocninách 1024.

Není to těžké. Je to jen základ.

Chcete-li se hlouběji ponořit do booleovské logiky a implementace logických hradel, podívejte se, jak funguje logické sčítání. Zbytek se počítá pouze binárně.