arrow_backWróć do field notes
COMPUTER SCIENCE Opublikowano 5 sie 2026

System binarny, szesnastkowy i jednostki danych — wyjaśnienie

Praktyczny słownik systemów liczbowych (binarny, szesnastkowy) i konwencji jednostek danych używanych w programowaniu, sieciach komputerowych i pracach kryminalistycznych.

Każdy bajt, który przeanalizujesz w edytorze heksadecymalnym, każdą maskę podsieci, którą obliczysz, każdy rozmiar pliku zgłaszany przez narzędzie — wszystko zależy od małego zestawu systemów liczbowych i konwencji jednostek. Jeśli się mylisz, źle ocenisz rozmiar bufora, błędnie przeczytasz zrzut pamięci albo będziesz się kłócić z kolegą, czy 1 KB to 1000 czy 1024 bajty.

System binarny: system, którym faktycznie mówi każdy komputer

System binarny to system o podstawie 2 — tylko 0 i 1. Jedna cyfra binarna to bit. Grupując 8 bitów razem, otrzymujesz bajt, który może reprezentować 256 odrębnych wartości (0 do 255 bez znaku, lub -128 do 127 ze znakiem, dopełnienie do dwóch).

Gdy widzisz 01001000, to 72 w systemie dziesiętnym, czyli kod ASCII znaku 'H'. Konwersja ręczna to po prostu sumowanie potęg 2 od skrajnego prawego bitu: 2^6 + 2^3 = 64 + 8 = 72. Narzędzia takie jak python3 -c "print(bin(72))" czy xxd na pliku zrobią to natychmiast, ale zrozumienie matematyki ma znaczenie, gdy przeprowadzasz inżynierię wsteczną maski bitowej lub obliczasz wartości flag w nagłówku TCP.

System szesnastkowy: skrót systemu binarnego

System szesnastkowy to system o podstawie 16, używający 0-9 i A-F. Istnieje, ponieważ system binarny jest nieczytelny w dużej skali, a system dziesiętny nie mapuje się czyszczenie na granice bajtów. Jedna cyfra szesnastkowa reprezentuje dokładnie 4 bity, więc dwie cyfry szesnastkowe reprezentują jeden pełny bajt — 0x00 do 0xFF obejmuje wszystkie 256 wartości bajtu bez zmarnowanego miejsca.

Dlatego zrzuty heksadecymalne są domyślne w narzędziach takich jak xxd, hexdump -C czy widok pamięci deasemblera. Gdy widzisz 0x4D 0x5A na początku pliku, to nagłówek MZ identyfikujący plik Windows PE. Adresy pamięci, kody kolorów (#FF5733), adresy MAC i adresy IPv6 są konwencjonalnie zapisywane w systemie szesnastkowym, ponieważ mapuje się on tak czyszczenie na podstawową strukturę bajtów i tetrad.

Konwersja systemu szesnastkowego na dziesiętny: 0x4D = (4 × 16) + 13 = 77. W Python, int('4D', 16) sprawi, że dostaniesz wynik bez ręcznych obliczeń, a hex(77) działa w drugą stronę.

Gdzie system binarny, dziesiętny i szesnastkowy faktycznie się spotykają w praktyce

Adresy IP to dobry przykład kolizji wszystkich trzech systemów. Adres IPv4 taki jak 192.168.1.1 to naprawdę cztery bajty: 11000000.10101000.00000001.00000001 w systemie binarnym, lub C0.A8.01.01 w systemie szesnastkowym. Matematyka subnettingu — ustalanie, czy dwa adresy są w tej samej sieci — to fundamentalnie operacje AND systemu binarnego na masce podsieci, choć wszystko piszemy w notacji dziesiętnej oddzielonej kropkami dla wygody.

W kryminalistyce cyfrowej i analizie malware'u stale przekształcasz reprezentacje pomiędzy tymi systemami. Deasembler wyświetla kody operacyjne w systemie szesnastkowym, ale procesor wykonuje binarny kod, a wartości rejestrów są często interpretowane jako dziesiętne przesunięcia lub ciągi ASCII w zależności od kontekstu. Wiedza, że 0x41 to zarówno liczba 65 jak i znak ASCII 'A', to rodzaj rozpoznawania wzorców, który znacznie przyspieszaja analizę ręczną.

Jednostki danych: problem 1000 vs 1024

W tym miejscu ludzie faktycznie się palą. Producenci pamięci masowej, systemy plików i systemy operacyjne nie zawsze się zgadzają, co to jest

Napisane z pomocą AI, zweryfikowane i opublikowane przez Michal Pilch (CISSP), Korra Studio.

Gotowy na więcej?

To jedna notatka z bazy wiedzy Korra Studio — platforma łączy każdy temat z mentoringiem 1 na 1.

Zacznij za darmoarrow_forward