Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: mgr Jerzy Wałaszek
Zmodyfikowano 26.09.2023

©2023 mgr Jerzy Wałaszek
I LO w Tarnowie

Matura - programowanie w C++

Liczby ósemkowe i szesnastkowe

SPIS TREŚCI

Liczby ósemkowe

Liczby dwójkowe są dobrym rozwiązaniem dla komputerów, jednak dla ludzi są mało czytelne, znajdź różnicę:

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:

  1. Rozdzielamy bity liczby dwójkowej na grupy 3 bitowe idąc od bitu najmłodszego do starszego.
  2. Każdą z grup zastępujemy cyfrą ósemkową zgodnie z tabelką.
  3. Otrzymane cyfry ósemkowe łączymy w całość i otrzymujemy liczbę ósemkową o tej samej wartości, co liczba dwójkowa.

Dla przykładu zamienimy w system ósemkowy dwie liczby dwójkowe z początku rozdziału:

L1 = 1111011101011010101010110001(2)

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ą.

Przykład:

L = 4530271555(8)
L = 4 5 3 0 2 7 1 5 5 5
100 101 011 000 010 111 001 101 101 101

L = 100101011000010111001101101101(2)

Do zapamiętania:

Na początek:  podrozdziału   strony 

Liczby szesnastkowe

Jeden bajt to 8 bitów. Bajty są ważne, ponieważ komputer zapamiętuje je w swojej pamięci: komórka pamięci komputera ma pojemność 8 bitów, dlatego przetwarzaną przez komputer informację dzieli się na bajty. Jeśli chcemy przedstawić w systemie ósemkowym zawartość komórki pamięci, to dostaniemy w wyniku 3 cyfry ósemkowe:
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.

Przykład:

L = 11011001011100112

L = 1101 1001 0111 0011
D 9 7 3

11011001011100112 = D97316

W drugą stronę postępujemy odwrotnie:

Przykład:

L = FEA7B01516

L = F E A 7 B 0 1 5
1111 1110 1010 0111 1011 0000 0001 0101

FEA7B01516 = 111111101010011110110000000101012

Dla ambitnych:

Zastanów się, jak szybko przekształcić liczbę ósemkową w szesnastkową lub odwrotnie.

Jak rozpoznać liczbę ujemną w 8-bitowym kodzie U2 zapisanym szesnastkowo?

Do zapamiętania:

Na początek:  podrozdziału   strony 

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.