Podcast o Sčítanie a odčítanie v dvojkovej sústave
Sčítanie a odčítanie v dvojkovej sústave: Komplexný Sprievodca
Podcast
Sčítanie a odčítanie binárnych čísel
Délka: 10 minut
Kapitoly
Hák, ktorý zaskočí väčšinu
Základy binárneho sčítania
Príklad krok za krokom
Finta na odčítanie: Dvojkový doplnok
Interpretácia výsledku
Príklad s kladným výsledkom
Príklad so záporným výsledkom
Zhrnutie a prechod
Keď čísla pretečú
Zhrnutie a záver
Přepis
Matej: Je tu jedna vec pri binárnom sčítaní, na ktorej pohorí 80 percent študentov na písomke. A pritom je to úplne jednoduché, ak viete, ako na to. Dnes vám ukážeme fintu, s ktorou to už nikdy nepokazíte.
Simona: Počúvate Studyfi Podcast.
Matej: Dobre Simona, poďme na to. Sčítanie v dvojkovej sústave... znie to ako niečo z Matrixu.
Simona: Vôbec nie! Je to skoro rovnaké ako v desiatkovej. Máš len dve číslice, nulu a jednotku. Takže 0 plus 0 je 0, a 0 plus 1 je 1. To je jasné.
Matej: To zatiaľ zvládam. Ale čo je ten chyták? Predpokladám, že je to 1 plus 1.
Simona: Presne tak! V desiatkovej by to bolo 2, ale dvojku v binárnej sústave nemáme. Takže, 1 plus 1 sa rovná 10. Teda zapíšeš 0 a prenesieš 1 do ďalšieho, vyššieho stĺpca. Ako keď pri sčítaní 9 plus 3 napíšeš 2 a prenesieš desiatku.
Matej: Aha! Takže ten prenos je kľúčový. Ukážme si to na príklade. Čo tak sčítať... 1011 a 1101?
Simona: Super voľba. Ideme pekne odzadu, sprava doľava. V prvom stĺpci máme 1 plus 1. To je...?
Matej: Nula a prenášam jednotku!
Simona: Správne! V druhom stĺpci máme 1 plus 0, plus tá naša prenesená jednotka. Takže zase 1 plus 1. Výsledok je opäť 0 a prenášame 1.
Matej: Chápem. Tretí stĺpec je 0 plus 1, plus naša prenesená jednotka. Zase 1 plus 1. Takže ďalšia nula a ďalší prenos.
Simona: Presne! A v poslednom stĺpci máme 1 plus 1, plus ten posledný prenos. To je vlastne 1 plus 1 plus 1, čo je 11 v binárnej. Zapíšeme 1 a ešte prenesieme 1 úplne na začiatok.
Matej: Takže výsledok je 11000. Keď si to preverím, 11 plus 13 je 24, a 11000 binárne je naozaj 24. Funguje to!
Simona: Vidíš? Žiadna veda. Ale teraz ti ukážem naozajstný trik, ktorý používajú počítače pri odčítaní.
Matej: Tak to som zvedavý. Je to ešte zložitejšie?
Simona: Práve naopak! Počítače sú vlastne trochu lenivé. Nechce sa im učiť odčítanie, tak ho premenia na sčítanie. Volá sa to metóda dvojkového doplnku.
Matej: Počkať, akože odčítanie je v skutočnosti sčítanie? To znie ako nejaká matematická mágia.
Simona: Presne! Ak chceš odčítať číslo B od čísla A, jednoducho zoberieš to číslo B, urobíš jeho dvojkový doplnok a ten potom k číslu A pripočítaš.
Matej: A ako sa robí ten... dvojkový doplnok?
Simona: Veľmi ľahko. Najprv v čísle obrátiš všetky bity – z núl urobíš jednotky a z jednotiek nuly. A potom k výsledku jednoducho pripočítaš jednotku. A máš to.
Matej: Takže počítač sa vlastne vyhol odčítaniu tým, že sa naučil tento jeden šikovný trik. To je geniálne. A my sme sa to práve naučili tiež.
Matej: Dobre, takže už vieme, ako nájsť dvojkový doplnok. Ale celý čas hovoríme, že je to vlastne skratka k odčítaniu. Takže... ako to presne funguje? Ako počítač použije tento doplnok na odčítanie dvoch čísel?
Simona: Výborná otázka, Matej. A teraz prichádza tá najlepšia časť. Počítač v skutočnosti vôbec neodčíta. On všetko mení na sčítanie! Celý trik spočíva v tom, ako interpretujeme konečný výsledok.
Matej: Počkaj, takže my vlastne nikdy neodčítame? To znie trochu ako mágia.
Simona: Je to taká malá matematická mágia, presne. Keď sčítaš číslo A s dvojkovým doplnkom čísla B, môžu nastať dve situácie. A toto je kľúčové si zapamätať.
Matej: Dobre, počúvam.
Simona: Prvá možnosť: ak pri sčítaní vznikne prenos z najvyššieho bitu—teda ak ti na konci vyjde o jeden bit navyše—jednoducho ho ignoruješ. Výsledok je kladný a je to priamo to, čo hľadáš.
Matej: Jednoducho ho zahodím? To je všetko?
Simona: Áno, proste sa tváriš, že tam nie je. Druhá možnosť: ak prenos nevznikne, výsledok je záporný. A aby si zistil jeho hodnotu, musíš z neho urobiť znova dvojkový doplnok a pridať znamienko mínus.
Matej: Dobre, to znie teoreticky... ale poďme si to ukázať na príklade. Čo tak jednoduché odčítanie: 13 mínus 6?
Simona: Super voľba. Takže, 13 je v 8-bitovom zápise 00001101. A číslo 6 je 00000110. Prvý krok je nájsť dvojkový doplnok šestky.
Matej: Okej, to sme sa učili. Inverzia je 11111001, pripočítam 1 a mám... 11111010. Je tak?
Simona: Perfektné! A teraz namiesto odčítania sčítame. Vezmeme pôvodné číslo 13 a pripočítame k nemu tento dvojkový doplnok šestky.
Matej: Takže sčítam 00001101 a 11111010. Keď to urobím stĺpcovou metódou... moment... vychádza mi 100000111. Je to deväť bitov!
Simona: Presne tak! Všimni si tú jednotku úplne naľavo. To je ten prenos, o ktorom som hovorila. Čo s ním urobíme?
Matej: Ignorujeme ho! Takže nám zostane 00000111. A to je... sedem. Hej! 13 mínus 6 je sedem. Ono to funguje!
Simona: Vidíš? Je to elegantné. Počítač len sčítal a dostal správny výsledok.
Matej: Dobre, to bolo jednoduché, lebo výsledok bol kladný. Ale čo ak to otočíme? Skúsme 6 mínus 13.
Simona: Výborne, poďme na to. Teraz je naše číslo A šestka, teda 00000110. A odčítavame trinástku, 00001101. Opäť, najprv potrebujeme dvojkový doplnok trinástky.
Matej: Jasné. Inverzia 00001101 je 11110010. Plus jedna je 11110011. Mám to.
Simona: Super. Teraz sčítame šestku a tento doplnok. Teda 00000110 plus 11110011.
Matej: A výsledok je... 11111001. Tentoraz žiadny deviaty bit. Žiadny prenos.
Simona: Presne! A to je signál. Hovorí nám to, že výsledok je záporný. Aby sme zistili aký, musíme urobiť dvojkový doplnok z tohto výsledku.
Matej: Aha! Takže vezmem 11111001, invertujem na 00000110, pripočítam jedna a mám 00000111. To je sedem.
Simona: Áno. A pretože sme vedeli, že výsledok je záporný, pridáme mínus. Výsledok je teda -7. Čo je správne, pretože 6 mínus 13 je -7.
Matej: Takže na zopakovanie, kľúčové je sledovať ten prenos. Ak je, ignorujem ho a výsledok je kladný. Ak nie je, výsledok je záporný a musím ho ešte raz previesť. Je to tak?
Simona: Trafil si klinec po hlavičke. To je celé tajomstvo odčítania v počítačoch. Znie to zložito, ale v skutočnosti je to len postupnosť jednoduchých krokov.
Matej: Fascinujúce. Ale stavím sa, že aj pri takomto elegantnom systéme sa dajú urobiť chyby. Na čo si dať najväčší pozor?
Simona: Absolútne. A to je skvelý prechod k ďalšej téme. Existuje niekoľko bežných pascí, do ktorých študenti často padajú, najmä pri práci s prenosmi a pretečením.
Matej: Super, takže teraz chápeme binárne sčítanie. Ale čo sa stane, keď je výsledok príliš veľký pre daný počet bitov?
Simona: Výborná otázka, Matej! Tým sa dostávame k našej poslednej téme — k digitálnej aritmetike a takzvanému pretečeniu.
Matej: Pretečenie? Znie to trochu dramaticky. Ako keď mi pretečie pohár s vodou?
Simona: V podstate áno! Predstav si, že 8-bitové číslo je pohár, ktorý udrží maximálne hodnotu 255. Keď sa snažíš naliať viac, jednoducho to pretečie.
Matej: Aha! Takže ak sčítam dve čísla a výsledok je väčší ako 255, počítač urobí chybu?
Simona: Presne. Výsledok bude nesprávny, pretože sa jednoducho nezmestí. A práve tu sú simulácie neuveriteľne užitočné, lebo ti to vizuálne ukážu.
Matej: Takže si môžem vyskúšať sčítať veľké čísla a na vlastné oči vidieť, ako k pretečeniu dôjde a aký to má dopad.
Simona: Presne tak. Pochopenie tohto limitu je kľúčové pri programovaní a návrhu systémov. Je to jeden z tých detailov, ktorý oddeľuje amatérov od profesionálov.
Matej: Fantastické. Takže, aby sme to zhrnuli... dnes sme prešli od základov binárnej sústavy, cez logické operácie, až po praktické problémy ako pretečenie. Cítim sa o dosť múdrejší.
Simona: To bol cieľ! Verím, že naši poslucháči teraz majú skvelý základ, aby v tejto oblasti excelovali. Pamätajte, kľúčom je skúšať a experimentovať.
Matej: Ďakujem ti, Simona, za všetky cenné rady. A vám, milí poslucháči, ďakujeme za pozornosť. Toto bol Studyfi Podcast, počujeme sa nabudúce!
Simona: Dovidenia!