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 29.01.2024

©2024 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 zgodnie z tabelką:

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
©2024 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.