To takhle jeden profesor učil svého synka základům logiky. Vtom hodiny na stěně začaly odbíjet celou, tak dostal nápad a ptá se: "Kdybych teď ty hodiny rozbil, byla by to vražda?"
Kluk odpoví: "Ne, byla by to sebeobrana."
"Jak to?" diví se otec.
"Hodiny uhodily první."
Takže číselné soustavy. Tohle byla základní věc podrobně rozváděná hned na začátku každé počítačové učebnice, dokud teda ještě za něco stály. Lidé počítají v desítkové soustavě, protože mají deset prstů. I v době kdy se používaly nepoziční systémy, jako jsou římská čísla, vycházely obvykle ze základu 10, na mnoho různých způsobů. I některé historické počítače počítaly desítkově, například celá "československá škola" vycházející z profesora Svobody, počítače SAPO, EPOS a jejich malosériově vyrábění nástupci. Mechanické počítače byly samozřejmě výhradně desítkové.
Z fyzikálních důvodů u elektronických počítačů převládla
dvojková/binární soustava, tedy dvě číslice
(0 a 1), reprezentující stavy vypnuto/zapnuto. Jenže čísla jako
010001101011110001101101 jsou pro lidský mozek dost těžko stravitelná, takže se hledaly způsoby jak se přiblížit našemu desítkovému ideálu. V dobách, kdy u většiny počítačů měl bajt šest bitů, se jako nejvýhodnější jevila
osmičková/oktalová soustava, tedy používající pro zápis osm číslic
(0 až 7). Proč asi:
Kód: Vybrat vše
000 = 0
001 = 1
010 = 2
011 = 3
100 = 4
101 = 5
110 = 6
111 = 7
Výše zmíněné číslo se pak dá rozbít na trojice bitů -
010 001 101 011 110 001 101 101 - a snadno podle nich zapsat osmičkově jako
21536155. Stejně snadno se potom převede zpátky do dvojkové soustavy. Běžná věc u sálových počítačů a starších minipočítačů, kde šířka slova měla nejčastěji 12, 18, 36, 48, 72 apod. bitů, pozůstatky z té doby jsou dodnes v jazyce C a z něj odvozených, a také například v nastavení přístupových práv k souborům v unixových systémech, včetně Linuxu a Androidu.
Jenže v roce 1964 přišel revoluční mainframe IBM System/360, kde konstruktéři z tehdy nepochopitelných důvodů zvolili místo šestibitového osmibitový bajt, a tam ta osmičková přestávala vyhovovat, osm bitů se špatně dělí na trojice a z dvoumístného čísla je najednou dvouapůlmístné. Tehdy přišel čas
šestnáctkové/hexadecimální soustavy se šestnácti číslicemi
(0 až F), která funguje úplně stejně, ale se čtveřicemi bitů:
Kód: Vybrat vše
0000 = 0
0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
1001 = 9
1010 = A (číselně 10)
1011 = B (číselně 11)
1100 = C (číselně 12)
1101 = D (číselně 13)
1110 = E (číselně 14)
1111 = F (číselně 15)
Takže číslo
0100 0110 1011 1100 0110 1101 se podle toho stejně snadno převede na
46BC6D, a úplně stejně snadno i opačně. Krásně tohle bylo vidět u osmibitových mikropočítačů, kde šestnáctibitové adresování paměti mohlo pracovat s adresami od
0 do
65535 desítkově, ale v šestnáctkové soustavě to bylo od
0000H do
FFFFH, to H na konci je zkratka Hex, aby se to nepletlo s desítkovými čísly.
Ve speciálních případech se i binárně musí počítat s desítkovými čísly, například v bankovnictví, kde by binární zaokrouhlování dávalo jiné výsledky než desítkové. Tam se používá kód BCD (Binary Coded Decimal), který z těch šestnácti kombinací používá pouze prvních deset, odpovídajících číslicím 0 až 9. Používá ho například jazyk COBOL, snadno si zjistíš jeho původ a účel. A stejným způsobem počítají i jednoduché kalkulačky, což jsou vlastně malé čtyřbitové počítače.
Převod dvojkového čísla na desítkové je trochu komplikovaný a vyžaduje celou řadu matematických operací, opačně je to trochu jednodušší.
Jsou dvě základní architektury počítačů, von Neumannova a Harvardská, nazývané podle jejich původu.
Maďarský matematik
von Neumann vytvořil koncepci jednoduchého univerzálního počítače, přitom vyšel z myšlenky, že program jsou také data. Proto program umístil do stejné paměti jako jím zpracovávaná data, do společného adresního prostoru. Program tak může změnit obsah sama sebe, takže počítač se dá snadno přeprogramovat.
Na
Harvardu vyšli z prací anglického matematika Charlese Babbage, jehož Analytical Engine z poloviny devatenáctého století měl program na pásu děrných karet, a do paměti ukládal pouze zpracovávaná data. Vznikly tak dva zcela oddělené adresní prostory, v jednom je program a ve druhém data. Můžou mít i různou délku slabiky nebo slova, například data bývají obvykle osmibitová, ale instrukce programu třeba třináctibitové. Nevýhoda je ta, že se program počítače obtížněji vyměňuje, takže tahle koncepce je vhodnější pro specializované stroje. Takhle dodnes fungují například mikrokontroléry v nejrůznějších zařízeních
(jeden takový máš ve své klávesnici), ale používaly to i superpočítače, třeba Cray v sedmdesátých a osmdesátých letech.
Koukám že ty vaše studijní materiály jsou velmi moderní, takže asi stojí dost za hovno. Naučíš se informace které budou v otázkách u zkoušek, sice tak dostaneš papír na hlavu, ale v hlavě máš prázdno. Učíš stylem cvičeného papouška. A mimochodem, databázím se dnes módně říká blokchain.
Ještě jedna zajímavost k těm číslům, v zaostalých zemích s nízkou gramotností se dodnes pro násobení používá pro násobení způsob založený na půlení a zdvojnásobování čísel. Znali ho už ve starověkém Egyptě a Mezopotámii, a kdoví jak dlouho předtím. Přesně stejný princip funguje i v počítačích.