Systemy liczbowe: zadania z rozwiązaniami krok po kroku
Inaczej: system dwójkowy · system szesnastkowy · zamiana systemów liczbowych
Darmowe zadania z tematu Systemy liczbowe z rysunkami, podpowiedziami i pełnymi rozwiązaniami. Za każdym razem nowe wartości, na trzech poziomach: z dwójkowego i szesnastkowego na dziesiętny, kod uzupełnień do dwóch, bity, zakresy i pamięć.
Darmowe zadanieŁatwy
Ustaw bity tak, aby 8-bitowy rejestr zawierał 0x99. Jaka jest wartość wzorca N w zapisie dziesiętnym?
0x99
Kliknij bit, aby przełączyć go między 0 a 1. Pole pokazuje twój wzorzec jako liczbę bez znaku, możesz go też wpisać. Dokładna odpowiedź: liczba całkowita, bez zaokrąglania.
dziel przez podstawę, czytaj reszty od dołu do góry
Szesnastkowy ↔ dwójkowy
jedna cyfra szesnastkowa = 4 bity
Kod uzupełnień do dwóch (U2)
odwróć bity i dodaj 1
Naucz się tematu Systemy liczbowe od zera
1Czym jest system liczbowy
W życiu codziennym liczysz w systemie dziesiętnym, o podstawie 10. Ma dziesięć cyfr, od 0 do 9, a każde miejsce jest warte dziesięć razy więcej niż miejsce po jego prawej stronie.
W liczbie 352 cyfra 3 jest warta 300, cyfra 5 jest warta 50, a cyfra 2 jest warta 2. Miejsca mają wartości 1, 10, 100, licząc od prawej.
352 = 3 · 100 + 5 · 10 + 2 · 1
Komputer przechowuje wszystko jako przełączniki włączone lub wyłączone. Dlatego liczy w systemie dwójkowym (binarnym), o podstawie 2, tylko z cyframi 0 i 1.
Jedna cyfra dwójkowa to bit. Grupa 8 bitów to bajt.
Zasada jest taka sama w każdym systemie: każda cyfra jest warta swoją wartość razy potęgę podstawy.
Samosprawdzenie Ile jest warta cyfra 7 w liczbie dziesiętnej 4721?
7000
700
70
7
Odpowiedź: 700. Licząc od prawej, miejsca mają wartości 1, 10, 100 i 1000. Cyfra 7 stoi na trzecim miejscu, więc jest warta 7 · 100 = 700.
2System dwójkowy i szesnastkowy
W systemie dwójkowym miejsca mają wartości 1, 2, 4, 8, 16 i tak dalej, licząc od prawej. Każde miejsce jest warte dwa razy więcej niż miejsce po jego prawej stronie.
W liczbie 8-bitowej miejsca mają wartości 128, 64, 32, 16, 8, 4, 2 i 1.
Aby odczytać liczbę dwójkową, dodaj wartości miejsc wszystkich bitów równych 1. Dla 0011 0010 jest to 32 + 16 + 2 = 50.
Długie ciągi bitów trudno czytać. Programiści często zapisują je zamiast tego w systemie szesnastkowym (hex), o podstawie 16.
System szesnastkowy potrzebuje 16 cyfr. Używa cyfr od 0 do 9, a potem liter A = 10, B = 11, C = 12, D = 13, E = 14 i F = 15.
Miejsca w systemie szesnastkowym mają wartości 1, 16, 256 i 4096, licząc od prawej. Liczbę szesnastkową często zapisuje się z 0x z przodu, na przykład 0x2F.
Jedna cyfra szesnastkowa to dokładnie 4 bity, więc 0011 0010 to 0x32: 0011 to 3, a 0010 to 2.
Samosprawdzenie Ile to jest 0x1A w systemie dziesiętnym?
110
11
161
26
Odpowiedź: 26. A = 10. Miejsca mają wartości 16 i 1, więc 1 · 16 + 10 · 1 = 26. Zapisanie cyfr obok siebie (110) lub ich dodanie (11) pomija wartości miejsc. 161 używa miejsc w złej kolejności.
3Liczby ujemne: kod uzupełnień do dwóch
Bajt, w którym wszystkie miejsca są dodatnie, przechowuje wartości od 0 do 255. Nazywamy to zapisem bez znaku.
Do przechowywania liczb ujemnych komputery używają kodu uzupełnień do dwóch. Jedyna zmiana polega na tym, że skrajnie lewy bit jest wart −128 zamiast +128.
Zatem 1000 0011 to −128 + 2 + 1 = −125. Skrajnie lewy bit nazywa się bitem znaku: gdy wynosi 1, liczba jest ujemna.
8-bitowa liczba w kodzie uzupełnień do dwóch obejmuje zakres od −128 (1000 0000) do +127 (0111 1111).
Aby zapisać liczbę ujemną −x, zacznij od +x w zapisie dwójkowym, zaneguj każdy bit (0 zamień na 1, 1 na 0) i dodaj 1.
Przykład dla −5: 5 to 0000 0101. Po zanegowaniu bitów jest to 1111 1010. Dodanie 1 daje 1111 1011.
Ten sam wzorzec odczytany jako liczba bez znaku ma wartość 256 − x. Dla −5 jest to 251, a 1111 1011 to rzeczywiście 128 + 64 + 32 + 16 + 8 + 2 + 1 = 251.
Samosprawdzenie 8-bitowy wzorzec 1111 1111 zapisuje liczbę w kodzie uzupełnień do dwóch. Jaka jest jego wartość?
255
−127
−128
−1
Odpowiedź: −1. −128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = −1. 255 to odczyt bez znaku. −127 wychodzi, gdy pierwszy bit potraktuje się jak znak minus przed 111 1111.
4Metoda krok po kroku
Z systemu dwójkowego lub szesnastkowego na dziesiętny:
Zapisz wartość miejsca pod każdą cyfrą: potęgi 2 dla systemu dwójkowego, potęgi 16 dla szesnastkowego, zaczynając od 1 po prawej.
W systemie szesnastkowym zastąp każdą literę jej wartością: od A = 10 do F = 15.
Pomnóż każdą cyfrę przez wartość jej miejsca i dodaj wszystko.
Kod uzupełnień do dwóch:
Aby odczytać wzorzec, nadaj skrajnie lewemu bitowi wartość −128 (w 8 bitach) i dodaj wartości miejsc wszystkich bitów równych 1.
Aby zapisać −x, zapisz +x na 8 bitach, zaneguj każdy bit i dodaj 1.
Wartość tego wzorca bez znaku to 256 − x. Użyj jej do sprawdzenia bitów.
Bity, zakresy i pamięć:
n bitów daje 2ⁿ różnych wzorców.
Bez znaku przechowują od 0 do 2ⁿ − 1. W kodzie uzupełnień do dwóch przechowują od −2ⁿ⁻¹ do 2ⁿ⁻¹ − 1.
Aby każdy z k elementów dostał własny kod, znajdź najmniejsze b, dla którego 2b ≥ k.
Dla pamięci pomnóż liczbę elementów przez liczbę bitów na element, a potem podziel przez 8, aby dostać bajty, i przez 1024, aby dostać KiB.
M = szerokość × wysokość × bity na piksel / 8 / 1024 (KiB)
5Przykład krok po kroku
Przejdź przez każdy krok. Spróbuj przewidzieć następny, zanim go odsłonisz.
Przykład krok po kroku
8-bitowy wzorzec 1011 0110 zapisuje liczbę całkowitą ze znakiem w kodzie uzupełnień do dwóch. Jaka jest jego wartość N w systemie dziesiętnym?
1
Zapisz wartości miejsc
W kodzie uzupełnień do dwóch skrajnie lewe miejsce jest warte −128. Pozostałe miejsca to 64, 32, 16, 8, 4, 2 i 1.
2
Spójrz na bit znaku
Skrajnie lewy bit wynosi 1, więc liczba jest ujemna.
3
Dodaj bity równe 1
Bity równe 1 stoją na miejscach −128, 32, 16, 4 i 2.
N = −128 + 32 + 16 + 4 + 2 = −74
4
Sprawdź za pomocą wartości bez znaku
Odczytany jako liczba bez znaku wzorzec to 128 + 32 + 16 + 4 + 2 = 182.
Dla liczby ujemnej wartość bez znaku to 256 − x, więc x = 256 − 182 = 74. Daje to znów N = −74.
5
Sprawdź przez negację
Zaneguj 1011 0110, aby otrzymać 0100 1001, a potem dodaj 1, aby otrzymać 0100 1010.
0100 1010 to 64 + 8 + 2 = 74. Zatem pierwotny wzorzec to −74.
Odpowiedź
N = −74
6Typowe błędy
Zapomnienie o dodaniu 1 po zanegowaniu bitów. Wynik jest o jeden za mały.
Odczytanie wzorca w kodzie uzupełnień do dwóch jako liczby bez znaku, na przykład 1111 1111 jako 255 zamiast −1.
Traktowanie bitu znaku jak znaku minus przed pozostałymi bitami. W kodzie uzupełnień do dwóch jest on wart −128.
Podawanie miejsc w złej kolejności. Miejsce o wartości 1 jest zawsze po prawej.
Przyjęcie A = 11 w systemie szesnastkowym. Litery zaczynają się od A = 10.
Mieszanie bitów i bajtów w zadaniach o pamięci. Podziel liczbę bitów przez 8.
Samosprawdzenie Jak wygląda −5 jako 8-bitowy wzorzec w kodzie uzupełnień do dwóch?
0000 0101
1000 0101
1111 1010
1111 1011
Odpowiedź: 1111 1011. 5 to 0000 0101. Negacja daje 1111 1010, a dodanie 1 daje 1111 1011. 1111 1010 pomija dodanie 1, a 1000 0101 stawia znak minus przed 5.
7Jak wyglądają zadania egzaminacyjne
Łatwe: z systemu dwójkowego i szesnastkowego na dziesiętny. Zamień 8-bitową liczbę dwójkową lub 3-cyfrową liczbę szesnastkową na dziesiętną.
Średnie: kod uzupełnień do dwóch. Odczytaj wartość 8-bitowego wzorca ze znakiem albo zapisz liczbę ujemną jako wzorzec i podaj jego wartość bez znaku.
Trudne: bity, zakresy i pamięć. Największa lub najbardziej ujemna wartość mieszcząca się w n bitach, liczba bitów potrzebnych na k kodów albo pamięć zajmowana przez obraz.
Przykład trudnego zadania: obraz 256 × 256 z 24 bitami na piksel zajmuje 256 · 256 · 24 / 8 / 1024 = 192 KiB.
Samosprawdzenie Jaka jest najmniejsza liczba bitów, która daje własny kod każdym z 375 elementów?
188
512
8
9
Odpowiedź: 9. 2⁸ = 256 to za mało kodów, 2⁹ = 512 wystarcza, więc 9 bitów. 512 to liczba kodów, a nie liczba bitów.
Zamień liczbę szesnastkową 0x2BE na dziesiętną. Wyznacz N.
0x2BEA = 10 … F = 15
Oblicz N
Pokaż podpowiedzi
Pozycje szesnastkowe są warte od prawej 1, 16, 256, 4096.
Zastąp litery ich wartościami (A = 10 … F = 15), pomnóż przez wagę i dodaj.
2 = 2, B = 11, E = 14.
Pokaż odpowiedź i rozwiązanie krok po kroku
Pozycyjne systemy liczbowe: każda cyfra jest warta swoją wartość razy potęgę podstawy. W systemie dwójkowym pozycje są warte 1, 2, 4, 8, 16, …, w szesnastkowym 1, 16, 256, …, a A–F oznaczają 10–15. W 8-bitowym kodzie uzupełnień do dwóch skrajny lewy bit jest wart −128 zamiast +128; tak zapisuje się liczby ujemne.
Pomnóż każdą cyfrę przez jej wagę
2·256 + 11·16 + 14·1 = 702
Odpowiedź
0x2BE = 702
Przykład 2Średni
Ustaw bity tak, aby zapisywały −45 w 8-bitowym kodzie uzupełnień do dwóch. Jaka jest wartość wzorca U odczytanego jako liczba bez znaku?
N = −458 bit
Oblicz U
Pokaż podpowiedzi
Zapisz 45 w systemie dwójkowym, odwróć każdy bit, a potem dodaj 1.
45 = 0010 1101₂.
Jako liczba bez znaku wzorzec jest równy 256 + N.
Pokaż odpowiedź i rozwiązanie krok po kroku
Ustawianie bitów: każdy bit ma wartość będącą potęgą dwójki (128, 64, …, 1). Jedna cyfra szesnastkowa to dokładnie cztery bity, a w 8-bitowym kodzie uzupełnień do dwóch skrajny lewy bit ma wartość −128. Operacje bitowe działają osobno na każdej pozycji bitu.
Odwróć i dodaj jeden
45 = 0010 1101
odwrócone: 1101 0010
+1 → 1101 0011
Odczytaj bez znaku
1101 0011₂ = 256 − 45 = 211
Odpowiedź
U = 211
Przykład 3Trudny
Ustaw bity na 8-bitowy wynik działania 0111 0001 >> 3. Jaka jest wartość wyniku R w zapisie dziesiętnym?
0111 0001>> 3
Oblicz R
Pokaż podpowiedzi
Przesunięcie w prawo o 3 przesuwa każdy bit o 3 pozycji w prawo; bity, które wypadną z prawego końca, są tracone, a z lewej wchodzą zera.
Pracuj nad jedną pozycją bitu naraz, od lewej do prawej.
Pierwsze cztery bity wyniku to 0000.
Pokaż odpowiedź i rozwiązanie krok po kroku
Ustawianie bitów: każdy bit ma wartość będącą potęgą dwójki (128, 64, …, 1). Jedna cyfra szesnastkowa to dokładnie cztery bity, a w 8-bitowym kodzie uzupełnień do dwóch skrajny lewy bit ma wartość −128. Operacje bitowe działają osobno na każdej pozycji bitu.
Bit po bicie
Przesunięcie w prawo o 3 przesuwa każdy bit o 3 pozycji w prawo; bity, które wypadną z prawego końca, są tracone, a z lewej wchodzą zera.
0111 0001 >> 3
= 0000 1110
Wartość wyniku
0000 1110₂ = 14
Odpowiedź
R = 14
Pytania i odpowiedzi
Systemy liczbowe: co to jest?
W życiu codziennym liczysz w systemie dziesiętnym, o podstawie 10. Ma dziesięć cyfr, od 0 do 9, a każde miejsce jest warte dziesięć razy więcej niż miejsce po jego prawej stronie.
W liczbie 352 cyfra 3 jest warta 300, cyfra 5 jest warta 50, a cyfra 2 jest warta 2. Miejsca mają wartości 1, 10, 100, licząc od prawej.
Systemy liczbowe: jak rozwiązywać zadania krok po kroku?
Pozycyjne systemy liczbowe: każda cyfra jest warta swoją wartość razy potęgę podstawy. W systemie dwójkowym pozycje są warte 1, 2, 4, 8, 16, …, w szesnastkowym 1, 16, 256, …, a A–F oznaczają 10–15. W 8-bitowym kodzie uzupełnień do dwóch skrajny lewy bit jest wart −128 zamiast +128; tak zapisuje się liczby ujemne.
Systemy liczbowe: co ćwiczysz?
Łatwy: z dwójkowego i szesnastkowego na dziesiętny
Średni: kod uzupełnień do dwóch
Trudny: bity, zakresy i pamięć
Każde zadanie ma nowe wartości, więc uczysz się metody, a nie odpowiedzi. Utknąłeś? Najpierw otwórz małą podpowiedź, a pełne wyjaśnienie dopiero wtedy, gdy go potrzebujesz.
Jak wygląda ćwiczenie
Każde zadanie ma nowe wartości, więc uczysz się metody, a nie odpowiedzi.
Utknąłeś? Najpierw otwórz małą podpowiedź, a pełne wyjaśnienie dopiero wtedy, gdy go potrzebujesz.
Twoje postępy, błędy i zapisane zadania są zachowywane, więc możesz je powtórzyć przed egzaminem.