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 čísel0:00 / 10:49
0:001:00 zostáva
MatejJe 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.
SimonaPočúvate Studyfi Podcast.
Kapitoly

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!