Podcast na Poloviční a úplná sčítačka
Poloviční a Úplná Sčítačka: Podrobný Rozbor pro Studenty
Podcast
Binární sčítání a sčítačky
Délka: 7 minut
Kapitoly
Mýtus o sčítání
Základy binárního sčítání
Poloviční sčítačka
Úplná sčítačka
Zpátky k přenosu
Jak funguje úplná sčítačka
Vícebitové sčítání v praxi
Shrnutí a závěr
Přepis
Lukáš: Věděla jsi, že pro počítač může být výsledek 1 + 1 nula?
Barbora: To je skvělá otázka, Lukáši! A ano, je to tak. Většina lidí si myslí, že 1 + 1 je vždycky 2, ale v binárním světě počítačů je to jen polovina pravdy.
Lukáš: Počkat, jak polovina? To mi teď vrtá hlavou. Nula? Kam zmizela ta jednička?
Barbora: Nikam nezmizela, jen se... přesunula. A přesně o tom si dnes budeme povídat. Posloucháte Studyfi Podcast.
Lukáš: Dobře, tak mě do toho zasvěť. Jak tedy počítače sčítají, když ne stylem 1 + 1 = 2?
Barbora: Skvěle. Počítače používají binární soustavu, tedy jen nuly a jedničky. Sčítání je pro ně základ. A pravidla jsou vlastně jednoduchá. 0 + 0 je 0. 0 + 1 je 1.
Lukáš: Zatím to dává smysl, to je jako v desítkové soustavě.
Barbora: Přesně. Zvrat přichází u 1 + 1. Výsledek je totiž 10 v binární soustavě. To znamená, že součet je 0 a jedničku si přenášíme do dalšího, vyššího řádu. Stejně jako když v desítkové sčítáš 9 + 1.
Lukáš: Aha! Takže ta nula je „součet“ a ta přesunutá jednička je „přenos“?
Barbora: Přesně tak! V informatice tomu říkáme Sum, tedy součet, a Carry, tedy přenos. A na tomhle principu fungují speciální obvody, kterým říkáme sčítačky.
Lukáš: Dobře, takže sčítačka je nějaký hardware, který tohle dělá automaticky?
Barbora: Ano. Ten nejjednodušší typ se jmenuje poloviční sčítačka, neboli Half Adder. Je to obvod, který má dva vstupy, A a B, pro dvě jednobitová čísla, která chceme sečíst.
Lukáš: A výstupy má taky dva? Jeden pro součet a jeden pro ten přenos?
Barbora: Bingo! Výstup S jako Sum a C jako Carry. Když sečteš 1 a 1, obvod ti na výstupu S dá 0 a na výstupu C ti dá 1.
Lukáš: Chápu. Takže umí sečíst dva bity. Ale co když potřebuju sečíst delší čísla? Zdá se mi to trochu... poloviční.
Barbora: To jsi trefil! Proto se jmenuje poloviční. Má totiž jedno velké omezení — neumí zpracovat přenos z předchozího, nižšího řádu. Je to jako začínat sčítání od nuly, ale ignorovat, jestli ti z minulého sloupce něco zbylo.
Lukáš: Dobře, takže poloviční sčítačka je super na první bit, ale dál už je ztracená. Co s tím?
Barbora: Na to máme jejího chytřejšího brášku — úplnou sčítačku, neboli Full Adder. A ta už na nic nezapomíná.
Lukáš: Jak to myslíš?
Barbora: Úplná sčítačka má tři vstupy. Dva pro sčítance A a B, stejně jako ta poloviční... ale má i třetí, jmenuje se Cin, neboli Carry-in. A to je přesně ten přenos z předchozího řádu.
Lukáš: Takže umí sečíst tři věci najednou? Dvě čísla a k tomu zbytek z minula?
Barbora: Přesně! Představ si, že sčítáš 1 + 1 a ještě ti přišel přenos 1 z předchozího sloupce. To je dohromady 3. V binární soustavě je to 11. Takže úplná sčítačka ti dá součet S = 1 a přenos dál, Cout, taky 1.
Lukáš: Takže abychom to shrnuli — poloviční sčítačka startuje proces a úplné sčítačky pak pokračují v řadě za sebou a předávají si ten přenos jako štafetu?
Barbora: Lepší přirovnání bych nenašla! Přesně takhle počítač sčítá i dlouhá čísla. Prostě spojí spoustu úplných sčítaček za sebe.
Lukáš: Tak jo, Boro. Poloviční sčítačka z minula byla super, ale měla jeden háček. Co když potřebujeme přičíst i ten přenos z předchozího sloupce, to „jedna dál“?
Barbora: Přesně tak, Lukáši! A na to máme hrdinu dnešního dílu: úplnou sčítačku. Ta má tři vstupy: A, B a právě ten přenos z předchozího řádu, kterému říkáme Cin.
Lukáš: Takže teď už můžeme sčítat jako na papíře. Jak to funguje uvnitř? Je to zase nějaká změť hradel?
Barbora: Je to hlavně chytrá kombinace. Finální součet S je A XOR B XOR Cin. A ten nový přenos dál, Cout, je sice vzorec, který vypadá složitě, ale dává smysl.
Lukáš: Jsem napnutý!
Barbora: V podstatě vezmeš přenos, který vznikne z A a B, a k němu přičteš pomocí OR přenos, který vznikne ze součtu A a B s přenosem Cin. Je to geniální.
Lukáš: Páni. Ale víš co je na tom nejlepší? Prý se dá postavit ze dvou polovičních sčítaček a jednoho OR hradla. To je jako skládat LEGO.
Barbora: Přesně! První poloviční sčítačka sečte A a B. Její součet pak jde do druhé poloviční sčítačky spolu se vstupem Cin. A přenosy z obou spojíme. Je to krásný příklad modularity v praxi.
Lukáš: Dobře, takže teď umíme sečíst jeden sloupec i s přenosem. Jak z toho ale uděláme sčítačku pro vícemístná čísla, třeba 4bitová nebo 8bitová?
Barbora: Jednoduše je zřetězíme! Spojíme je do kaskády. Výstupní přenos, Cout, z jedné sčítačky se stane vstupním přenosem, Cin, pro další sčítačku ve vyšším řádu.
Lukáš: Takže je to taková matematická štafeta, kde si bity předávají kolík v podobě přenosu?
Barbora: To je skvělá analogie! Přesně tak. Pro sčítání dvou 2bitových čísel, třeba A1A0 a B1B0, tak použijeme jednu poloviční sčítačku pro ten nejméně významný bit...
Lukáš: ...a jednu úplnou sčítačku pro ten významnější bit, která dostane ten přenos od té první. Chápu!
Barbora: Vidíš! Takže když sečteme třeba 01 a 11, což je desítkově 1 + 3... první sčítačka dá 1+1, součet je 0 a přenos 1. Druhá sčítačka pak sečte 0+1 a ten přenos 1.
Lukáš: Což je zase součet 0 a přenos 1. Takže výsledek je... 100. Čtyři! Perfektně to sedí.
Barbora: Je to tak. A stejným principem bychom poskládali i 4bitovou, 8bitovou nebo klidně 64bitovou sčítačku, kterou máte v procesoru. Prostě řetězíte další a další úplné sčítačky.
Lukáš: Takže od jednoduchých logických hradel, přes poloviční a úplné sčítačky až po sčítání velkých čísel... všechno to do sebe krásně zapadá. Úžasné. Díky moc, Boro, za skvělé vysvětlení.
Barbora: Já děkuji, Lukáši. Bylo to super.
Lukáš: A děkujeme i vám, že jste poslouchali Studyfi Podcast. Doufáme, že teď pro vás budou digitální obvody o něco jasnější. Mějte se fajn a uslyšíme se u dalšího dílu!