Podcast o System dwójkowy i szesnastkowy
System Dwójkowy i Szesnastkowy: Kompletny Przewodnik dla Uczniów
Podcast
Systemy Liczbowe: Jak Mówią Komputery?
Délka: 11 minut
Kapitoly
Obietnica "Aha!"
Dlaczego nie wystarczy nam dziesięć palców?
Poznajmy bohaterów: dwójkowy, ósemkowy i szesnastkowy
Sztuka konwersji, czyli jak zostać tłumaczem
Droga powrotna do domu: konwersja na system dziesiętny
Konwersje na skróty: magiczne grupy
Najczęstsze pułapki i jak ich unikać
Metoda na minus
Odwracanie i dodawanie
Podsumowanie i pożegnanie
Přepis
Alicja: Za następne dziesięć minut zrozumiesz, dlaczego te wszystkie "dziwne" systemy liczbowe, o których uczysz się w szkole, działają zupełnie inaczej — i prościej — niż Ci się wydaje. To klucz do zrozumienia, jak naprawdę myślą komputery.
Jakub: Dokładnie tak. Pokażemy, że to nie jest żadna czarna magia, a raczej bardzo logiczna układanka. I obiecujemy, że po tym czasie przeliczanie między systemami stanie się drugą naturą.
Alicja: Słuchacie Studyfi Podcast.
Jakub: Alicja, zacznijmy od podstaw. Wszyscy używamy na co dzień systemu dziesiętnego. Masz dziesięć palców, mamy dziesięć cyfr od zera do dziewięciu... wydaje się to naturalne, prawda?
Alicja: No tak, liczę tak od dziecka. Ale w informatyce nagle pojawiają się jakieś systemy dwójkowe, szesnastkowe... Po co to komu?
Jakub: Świetne pytanie! Wszystkie te systemy, włącznie z naszym dziesiętnych, to systemy pozycyjne. To znaczy, że wartość cyfry zależy od tego, gdzie stoi w liczbie. Na przykład w liczbie 345, ta trójka to nie jest po prostu 3, to 300, bo jest na trzeciej pozycji od końca.
Alicja: Czyli pozycja ma znaczenie. To jasne. Ale skąd te inne systemy?
Jakub: Komputery nie mają dziesięciu palców. Mają za to miliardy małych przełączników, które mogą być włączone albo wyłączone. Stan "włączony" to jedynka, a "wyłączony" to zero. I to jest cała filozofia systemu dwójkowego, czyli binarnego.
Alicja: A więc to język elektroniki! Albo jest prąd, albo go nie ma. Proste.
Jakub: Dokładnie tak. I to jest nasz pierwszy bohater: system dwójkowy, o podstawie 2. Używa tylko cyfr 0 i 1, które nazywamy bitami. Na przykład liczba binarna 1011 to nie jest tysiąc jedenaście.
Alicja: To w takim razie ile? Jak to policzyć?
Jakub: Tak samo jak w systemie dziesiętnym, tylko zamiast potęg dziesiątki, używamy potęg dwójki. Czyli dla 1011 od prawej strony mamy: 1 razy 2 do potęgi zerowej, plus 1 razy 2 do pierwszej, plus 0 razy 2 do drugiej i 1 razy 2 do trzeciej.
Alicja: Chwila, liczę... 1 plus 2 plus 0 plus 8... to jedenaście! Czyli 1011 w systemie dwójkowym to nasze 11.
Jakub: Bingo! Widzisz? To tylko inna podstawa. Idąc dalej, mamy system ósemkowy, który używa cyfr od 0 do 7. I system szesnastkowy, który jest trochę... egzotyczny.
Alicja: Egzotyczny? Co w nim takiego specjalnego?
Jakub: Używa 16 symboli. Cyfr od 0 do 9, a potem, ponieważ cyfry się skończyły, używa liter: A to 10, B to 11, aż do F, które oznacza 15.
Alicja: Alfabet w matematyce! Tego mi właśnie brakowało do szczęścia. Ale po co nam on, skoro mamy już system dwójkowy dla komputerów?
Jakub: Bo system szesnastkowy to świetny sposób na skracanie długich ciągów zer i jedynek. Jedna cyfra szesnastkowa to dokładnie cztery bity. Zamiast pisać 11010110, programista może napisać D6. O wiele czytelniej, prawda?
Alicja: Okej, czyli mamy różne języki liczb. A jak zostać tłumaczem? Powiedzmy, że mam naszą liczbę 25 i chcę ją zapisać w systemie dwójkowym. Jak to zrobić?
Jakub: To proste, stosujemy metodę dzielenia z resztą. Dzielisz swoją liczbę przez podstawę systemu, na który chcesz przejść. W przypadku systemu dwójkowego, dzielimy przez 2. I tak w kółko, aż dojdziemy do zera.
Alicja: Dobra, spróbujmy z 25. 25 podzielić na 2 to 12 i reszta 1.
Jakub: Super. Teraz bierzesz wynik, czyli 12. 12 na 2 to 6, reszta 0.
Alicja: Okej, dalej... 6 na 2 to 3, reszta 0. 3 na 2 to 1, reszta 1.
Jakub: I ostatni krok. 1 na 2 to 0, reszta 1. Doszliśmy do zera w wyniku, więc koniec. Teraz najważniejsze, i to jest częsty błąd: reszty czytamy od końca!
Alicja: Czyli od dołu do góry... 1, 1, 0, 0, 1. A więc 25 to w systemie dwójkowym 11001. Hej, to naprawdę działa!
Jakub: Oczywiście, że działa! I ta sama metoda zadziała dla każdego innego systemu. Chcesz zamienić 25 na system ósemkowy? Dzielisz przez 8. 25 na 8 to 3, reszta 1. 3 na 8 to 0, reszta 3. Czytamy od końca: 31. Czyli 25 dziesiętnie to 31 ósemkowo.
Alicja: Dobra, zamiana z naszego systemu na inne ma sens. A w drugą stronę? Jak zobaczyć, że 11001 to faktycznie 25?
Jakub: To jest jeszcze łatwiejsze, bo już to robiliśmy na początku! To jest ta metoda z potęgami. Bierzesz każdą cyfrę i mnożysz ją przez podstawę systemu podniesioną do potęgi odpowiadającej jej pozycji.
Alicja: Czyli dla 11001 w systemie dwójkowym, numerujemy pozycje od prawej, zaczynając od zera...
Jakub: Dokładnie. Więc mamy 1 razy 2 do potęgi zerowej, plus 0 razy 2 do pierwszej, plus 0 razy 2 do drugiej, plus 1 razy 2 do trzeciej, plus 1 razy 2 do czwartej.
Alicja: Co daje... 1 razy 1, plus 0, plus 0, plus 1 razy 8, plus 1 razy 16. Czyli 1 + 8 + 16... 25! Zgadza się!
Jakub: Widzisz? To po prostu suma wartości pozycji. Tak samo zrobisz z liczbą ósemkową 31. To będzie 3 razy 8 do pierwszej plus 1 razy 8 do zerowej, czyli 24 plus 1, co daje 25. Działa jak w zegarku.
Alicja: Okej, ale mówiłeś, że system szesnastkowy i ósemkowy to takie skróty dla binarnego. Czy jest jakiś prostszy sposób na konwersję między nimi, bez przechodzenia przez system dziesiętny?
Jakub: O tak, i to jest właśnie ta obiecana "aha" chwila! Ponieważ 8 to 2 do potęgi trzeciej, a 16 to 2 do potęgi czwartej, możemy konwertować je przez grupowanie bitów.
Alicja: Grupowanie? Jak to?
Jakub: Żeby zamienić liczbę z binarnej na ósemkową, dzielisz ją na grupy po trzy bity, zaczynając od prawej. Weźmy na przykład liczbę 11010110.
Alicja: Okej, od prawej... pierwsza grupa to 110, druga to 010, i na końcu zostaje 11. Co z tym?
Jakub: Uzupełniasz zerem z lewej strony, żeby też miała trzy bity. Czyli masz 011. Teraz każdą grupę zamieniasz osobno na cyfrę ósemkową.
Alicja: Chwila... 011 to 3. 010 to 2. A 110 to 6. Czyli... 326? To wszystko?
Jakub: To wszystko. Koniec magii. 11010110 w systemie dwójkowym to 326 w ósemkowym. Bez skomplikowanego liczenia. W drugą stronę jest tak samo: bierzesz każdą cyfrę ósemkową i zamieniasz na 3 bity.
Alicja: A z systemem szesnastkowym pewnie jest podobnie, tylko grupy będą po cztery bity?
Jakub: Dokładnie! Ta sama liczba, 11010110, dzielimy na grupy po 4 bity: 1101 i 0110. 1101 to 13, czyli litera D. A 0110 to 6. Wynik: D6. Proste, szybkie i eleganckie.
Alicja: Brzmi świetnie. Ale na pewno są jakieś pułapki, w które łatwo wpaść na egzaminie.
Jakub: Oczywiście. Pierwsza i najważniejsza: zawsze zapisuj podstawę systemu! Liczba 101 to może być sto jeden, pięć albo... sto jeden. Bez małego indeksu dolnego, nikt nie wie o co chodzi. To darmowa utrata punktów.
Alicja: Druga pułapka, którą już wspominałeś: czytanie reszt w złej kolejności przy konwersji z dziesiętnego. Zawsze od ostatniej do pierwszej!
Jakub: Tak jest. Kolejny błąd to używanie złych cyfr. Jak zobaczę cyfrę 8 w liczbie ósemkowej, to wiem, że coś jest bardzo nie tak. To jak próba napisania słowa używając litery, która nie istnieje w danym alfabecie.
Alicja: Rozumiem. I ostatnia rzecz, to uzupełnianie zerami przy grupowaniu. Jeśli o tym zapomnimy, np. przy konwersji z binarnego na ósemkowy, to z grupy 11 zrobimy 3 zamiast 011, co da nam zupełnie inną liczbę.
Jakub: Dokładnie. Te zera z przodu mają znaczenie. Ale jak już opanujesz te zasady, jesteś w domu. Widzisz? Mówiłem, że to logiczna układanka.
Alicja: To było naprawdę intensywne, ale został nam ostatni, kluczowy temat na dziś. Coś, co spaja to wszystko w całość.
Jakub: Dokładnie. Przechodzimy do dwójkowego komplementu, czyli uzupełnienia do dwóch. To standardowy sposób, w jaki komputery radzą sobie z liczbami ujemnymi.
Alicja: Po co w ogóle specjalny system? Czemu nie wystarczy postawić znaku minus z przodu?
Jakub: Dobre pytanie! Bo ten system genialnie upraszcza operacje. Dzięki niemu odejmowanie staje się dla komputera... dodawaniem. To bardzo sprytne.
Alicja: Okej, sprytne i oszczędza pracę procesorowi. To jak w praktyce zamienić liczbę, na przykład -5, na ten kod?
Jakub: To przepis w trzech krokach. Najpierw bierzemy liczbę dodatnią, czyli 5, w zapisie na ośmiu bitach: 00000101.
Alicja: Krok pierwszy, zrobione. Co dalej?
Jakub: Krok drugi: odwracamy wszystkie bity. Zera na jedynki, jedynki na zera. Dostajemy 11111010.
Alicja: A ostatni, magiczny krok?
Jakub: Dodajemy jeden. Czyli 11111010 plus 1 daje nam 11111011. I to jest właśnie -5 w systemie dwójkowego komplementu.
Alicja: I widzę, że pierwszy bit, ta jedynka, od razu mówi nam, że to liczba ujemna. Proste!
Jakub: Dokładnie! Ten najbardziej znaczący bit to właśnie znak. Pamiętajcie o tym, a unikniecie wielu błędów.
Alicja: No dobrze, to już wszystko na dziś. Omówiliśmy systemy liczbowe, operacje na bitach i na koniec dwójkowy komplement. Mam nadzieję, że czujecie się pewniej!
Jakub: Zdecydowanie! To są fundamenty, które otwierają drzwi do zrozumienia, jak naprawdę działają komputery. Dzięki za wspólną naukę i do usłyszenia!
Alicja: Dzięki, pa pa!