W adresacji IPv4 adresy to 32 bitowe liczby binarne. Jednakże, dla ułatwienia ludziom ich użycia, binarny adres IPv4 przedstawiamy w zapisie kropkowo-dziesiętnym. Uzyskuje się to przez podział 32 bitowej liczby na cztery ośmiobitowe części (bajty zwane oktetami), a następnie rozdzielenie ich kropkami. Nazwa oktet bierze się stąd, że każda dziesiętna liczba reprezentuje 1 bajt czyli 8 bitów.

Binarny adres:

11000000 10101000 00001010 00001010

przedstawiony w postaci kropkowo-dziesiętnej zapiszemy jako:

192.168.10.10

Na rys. 1 kliknij każdy z przycisków aby zobaczyć jak 32 bitowy adres binarny jest zapisywany w notacji dziesiętnej rozdzielonej kropkami.

Ale w jaki sposób określane są bieżące wartości dziesiętne?

Binarny (dwójkowy) system liczbowy

W dwójkowym systemie liczbowym podstawą (bazą) jest liczba 2. Oznacza to, iż każda pozycja reprezentuje 2 do potęgi o rosnącej wartości (zaczynając od 0 dla skrajnego bitu z prawej, a kończąc na 7 dla skrajnego bitu z lewej strony bajtu). Gdy ograniczymy się tylko do liczb składających się z 8 bitów, kolejne pozycje będą reprezentować następujące wartości:

2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0

128 64 32 16 8 4 2 1

System pozycyjny o podstawie wynoszącej 2 (inaczej mówiąc: system dwójkowy) posiada tylko dwie cyfry: 0 i 1, jak pokazano na rysunku 1.

W przypadku, gdy będziemy interpretować bajt jako liczbę dziesiętną, należy zauważyć, iż do obliczanej sumy wejdą tylko potęgi liczby 2 związane z pozycjami, na których znajduje się cyfra 1. Oznacza to, iż pozycje, w których znajduje się cyfra 0, mają wartość zero, przez co nie wpływają na całkowitą wartość przeliczanej liczby, co też zostało pokazane na rys. 1.

Rys. 2 pokazuje binarną postać dziesiętnej liczby 192. Cyfra 1 na danej pozycji oznacza, że przeliczając liczbę binarną na dziesiętną, dodajemy wartość dziesiętną tej pozycji do sumy całkowitej. Cyfra 0 na dowolnej pozycji oznacza, że wartości dziesiętnej tej pozycji nie dodajemy do sumy końcowej. Liczba binarna 11000000 ma cyfrę 1 na pozycji o wartości dziesiętnej równej 2^7 (tzn. 128) oraz cyfrę 1 na pozycji o wartości dziesiętnej 2^6 (tzn. 64). Pozostałe bity są równe 0 więc wartości dziesiętnych tych pozycji nie dodajemy do wartość dziesiętnej przeliczanej liczby. W wyniku dodawania 128+64 otrzymamy wartość 192, która odpowiada liczbie binarnej 11000000.

Oto dwa kolejne przykłady:

Przykład 1: Oktet składający się z samych jedynek: 11111111

Dla przypomnienia: cyfra 1 na danej pozycji oznacza, że przeliczając liczbę binarną na dziesiętną, dodajemy wartość dziesiętną tej pozycji do sumy całkowitej. Cyfra 1 na każdej pozycji oznacza, że dodajemy do siebie wartości dziesiętne wszystkich pozycji, uzyskując wartość dziesiętną 255 dla tego oktetu.

128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255

Przykład 2: Oktet składający się z samych zer: 00000000

Dla przypomnienia: cyfra 0 na danej pozycji oznacza, że przeliczając liczbę binarną na dziesiętną, pomijamy wartość dziesiętną tej pozycji. Zatem osiem 0 wypełniających cały oktet po przeliczeniu na wartość dziesiętną wyniesie 0, tak jak to przedstawiono poniżej.

0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 = 0

Różne kombinacje 1 i 0 dadzą różne wartości dziesiętne.