Serwis Edukacyjny w I-LO w Tarnowie ![]() Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy Wałaszek |
©2023 mgr Jerzy Wałaszek |
1111011101011010101010110001 i 1111011101010101010010110001
Aby ułatwić sobie pracę z liczbami dwójkowymi, stosuje się inne systemy liczbowe, które są dla nas bardziej czytelne, a jednocześnie pozwalają na szybkie konwersje na system dwójkowy i odwrotnie.
Takim systemem jest system ósemkowy, zwany również oktalnym (ang. octal numeral system). Jeśli opanowałeś lekcję o systemach pozycyjnych, to system ósemkowy powinien być dla ciebie zrozumiały.
System ósemkowy ma podstawę p = 8 oraz stosuje 8 cyfr: 0, 1, 2, 3, 4, 5, 6, 7.
Wartość liczby ósemkowej obliczamy wg poznanych zasad: mnożymy wagi pozycji przez wartości cyfr znajdujących się na nich i otrzymane iloczyny sumujemy. Wagi pozycji są kolejnymi potęgami podstawy, czyli liczby 8:
wagi | 512 | 64 | 8 | 1 |
83 | 82 | 81 | 80 | |
cyfry: | 7 | 5 | 0 | 4 |
pozycje: | 3 | 2 | 1 | 0 |
7504(8) = 512×7 + 64×5+1×4
= 3584 + 320 + 4
= 3908(10)
Zwróć uwagę, iż podstawa systemu ósemkowego jest potęgą podstawy systemu dwójkowego:
8 = 23
Dzięki tej właściwości zamiana liczby dwójkowej w ósemkową i na odwrót jest niezwykle prosta. Musisz jedynie nauczyć się na pamięć wartości cyfr ósemkowych w systemie dwójkowym. Każdą cyfrę przedstawiamy trzema bitami:
OCT | BIN |
0 | 000 |
1 | 001 |
2 | 010 |
3 | 011 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
Dlaczego akurat 3 bity? Można to uzasadnić na podstawie wzorów obliczania wartości liczb pozycyjnych, ale nie chcę cię zamęczać matematyką, zauważ jednak, że ma to coś wspólnego z 8 = 23.
Aby zamienić liczbę dwójkową, postępujemy następująco:
Dla przykładu zamienimy w system ósemkowy dwie liczby dwójkowe z początku rozdziału:
Rozdzielamy liczbę na grupy 3 bitowe poczynając od ostatniego bitu.
001 111 011 101 011 010 101 010 110 001
W ostatniej grupie brakło dwóch cyfr. Dopisujemy dwa bity 0 (nie zmienia to wartości grupy).
Grupy zamieniamy na cyfry ósemkowe:
001 | 111 | 011 | 101 | 011 | 010 | 101 | 010 | 110 | 001 |
1 | 7 | 3 | 5 | 3 | 2 | 5 | 2 | 6 | 1 |
L1 = 1735325261(8)
L2 = 1111011101010101010010110001(2)
L2 = | 001 | 111 | 011 | 101 | 010 | 101 | 010 | 010 | 110 | 001 |
1 | 7 | 3 | 5 | 2 | 5 | 2 | 2 | 6 | 1 |
L2 = 1735252261(8)
Mamy obie liczby przeliczone na system ósemkowy, teraz można je łatwo porównać:
1735325261(8) i 1735252261(8)
Liczby są różne.
Zamiana z systemu ósemkowego na dwójkowy jest równie prosta: wykonujemy operację odwrotną - każdą cyfrę ósemkową zastępujemy trzema bitami zgodnie z tabelką.
L = | 4 | 5 | 3 | 0 | 2 | 7 | 1 | 5 | 5 | 5 |
100 | 101 | 011 | 000 | 010 | 111 | 001 | 101 | 101 | 101 |
L = 100101011000010111001101101101(2)
Bajt | |||||||
b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
c2 | c1 | c0 | |||||
Cyfry ósemkowe |
Zwróć uwagę, iż podział nie jest równy. Cyfra c2 obejmuje 2 bity, a pozostałe cyfry obejmują po 3 bity. Z tego powodu informatycy częściej posługują się systemem szesnastkowym przy kodowaniu liczb dwójkowych.
System szesnastkowy ma podstawę p = 16. Do zapisu liczb potrzebujemy 16 cyfr. Pierwsze dziesięć wzięto z systemu dziesiętnego, a brakujące 6 zastąpiono początkowymi literami alfabetu A...F (lub a...f):
0, 1, 2, 3, 4 ,5 ,6, 7, 8, 9, A, B, C, D, E, F
Wartości cyfr szesnastkowych (HEX) są następujące:
HEX | DEC |
0 | 0 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
8 | 8 |
9 | 9 |
A | 10 |
B | 11 |
C | 12 |
D | 13 |
E | 14 |
F | 15 |
Podstawa 16 jest potęgą podstawy 2: 16 = 24. Możemy zatem zastępować cyfry szesnastkowe 4 bitami o wartości zastępowanej cyfry. Naucz się tabelki przeliczeniowej:
HEX | BIN |
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
9 | 1001 |
A | 1010 |
B | 1011 |
C | 1100 |
D | 1101 |
E | 1110 |
F | 1111 |
System szesnastkowy ładnie pokrywa bajty i ich wielokrotności. Konwersję szesnastkowo dwójkową wykonujemy dokładnie tak samo, jak z systemem ósemkowym, tylko teraz cyfrą szesnastkową kodujemy 4 bity liczby dwójkowej.
L = 11011001011100112
L = | 1101 | 1001 | 0111 | 0011 |
D | 9 | 7 | 3 |
11011001011100112 = D97316
W drugą stronę postępujemy odwrotnie:
L = FEA7B01516
L = | F | E | A | 7 | B | 0 | 1 | 5 |
1111 | 1110 | 1010 | 0111 | 1011 | 0000 | 0001 | 0101 |
FEA7B01516 = 111111101010011110110000000101012
Zastanów się, jak szybko przekształcić liczbę ósemkową w szesnastkową lub odwrotnie.
Jak rozpoznać liczbę ujemną w 8-bitowym kodzie U2 zapisanym szesnastkowo?
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2023 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.