Przewodnik po bitach, półbajtach, hex i innych.

Wstęp:

Witamy na moim inauguracyjnym wpisie. taniec bitów i bajtów. W tym samouczku wyruszamy w podróż, aby odkryć podstawowe elementy leżące u podstaw cyfrowej reprezentacji informacji o wartościach wyrażonych w bitach, półbajtach (nibble), hexadecimal (szesnastkowo), word, double word, quard word.

W stale rozwijającym się krajobrazie informatyki głębokie zrozumienie tych koncepcji przypomina posiadanie klucza głównego do królestwa manipulacji danymi. Niezależnie od tego, czy jesteś doświadczonym programistą, czy początkującym entuzjastą, ta eksploracja jest niezbędna, ponieważ ten wpis rozpocznie cykl wpisów o ruchu sieciowym. Zrozumienie tej tematyki jest niezbędne zanim omówimy takie pojęcia jak model OSI oraz TCP/IP, ramki, pakiety, segmenty. To wszystko po to, aby finalnie móc zrozumieć i identyfikować zagrożenia w ruchu sieciowym.

Zatem zapnij pasy, gdy zagłębiamy się w rdzeń informatyki. Czy jesteś gotowy na wyprawę w binarną dzicz? Wyruszmy razem w tę pouczającą podróż!

Bity:

  • Bity – komputery wszystkie dane widzą u swojej podstawy jako wartości binarne 0 lub 1, czyli bity. Jest to najmniejsza jednostka reprezentująca dane. Osiem bitów to jeden bajt. Na dole wpisu postaram się przybliżyć ciekawostkę historyczną, która pokazuje, że nie zawsze jeden bajt to 8 bitów 😉
  • Liczenie w systemie binarnym przebiega według prostego wzoru matematycznego. W systemie binarnym każda cyfra reprezentuje potęgę 2, zaczynając od cyfry znajdującej się najbardziej na prawo. Cyfra znajdująca się najbardziej na prawo reprezentuje 20, następna cyfra po lewej stronie reprezentuje 21 kolejna 22 i tak dalej.
  • Przykład:

Nibbles (półbajty):

  • Nibble – odnosi się do jednostki danych równej czterem cyfrom binarnym lub połowie standardowego bajtu. Zasadniczo półbajt składa się
    z czterech bitów i reprezentuje pojedynczą cyfrę szesnastkową (0-15).
    1 Nibble = 1 hex = 4 bity = 0,5 bajta.

Hexadecimal (szesnastkowe):

  • Hexadecimal (hex): Szesnastkowy, często w skrócie „szesnastkowy”, to system liczbowy o podstawie 16 stosowany w matematyce i informatyce. W systemie szesnastkowym liczby są przedstawiane za pomocą 16 różnych cyfr, łączących cyfry dziesiętne 0–9 z pierwszymi sześcioma literami alfabetu (A–F) w celu przedstawienia wartości od 0 do 15. System szesnastkowy jest powszechnie używany w obliczeniach do różnych celów , takie jak adresowanie pamięci, dziesiętny kod binarny i reprezentowanie kolorów cyfrowych.W systemie szesnastkowym każda cyfra reprezentuje potęgę 16, zaczynając od cyfry znajdującej się najbardziej na prawo. Cyfra znajdująca się najbardziej na prawo reprezentuje 160 (1), następna cyfra po lewej stronie oznacza 161 (16), następna 162 (256) i tak dalej. Pozwala to na zwięzłą reprezentację danych binarnych, ponieważ każda cyfra szesnastkowa odpowiada grupie czterech cyfr binarnych (bitów).
  • W liczbach szesnastkowych często możemy spotkać się z oznaczeniem np 0x1A0. Przedrostek „0x” informuje nas, że mamy przed sobą szesnastkową (haxadecimal) liczbę.
  • Przykłady:

Word/Double Word/Quard Word:

  • W sieci word ma długość 2 bajtów, czyli 16 bitów. Pamiętaj, że w tym artykule dokonujemy tego rozróżnienia w odniesieniu do sieci, a w architekturze systemów operacyjnych i programowania niskiego poziomu rozmiar word zależy całkowicie od rozmiarów rejestrów w komputerze. Oznacza to, że np. twój 64 bitowy procesor – word – spostrzega jako wartość 64 bitową.
  • Double Word i Quard Word to pojęcia odpowiednio wynoszące 2 x word oraz 4 x word.

Ciekawostka 🔍:

Obiecane – „Ile bitów w bajtach?? 👩‍💻
Ta dyskusja pojawiła się również w 2023 roku w radiu ZET w którym to jeden polityk został o to zapytany. Wybuchła wówczas wśród społeczeństwa dyskusja o tym, ile bitów ma bajt… i jak on może tego nie wiedzieć, skoro to takie proste…
aaa, więc w dziedzinie bitów i bajtów rozwikłajmy zawiłości z dwóch kluczowych perspektyw – inżyniera sieci i inżyniera systemów operacyjnych.

🌐 Punkt widzenia inżyniera sieci:

Kiedy w grę wchodzi sieć, bajt przyjmuje różne role. Standardowe zrozumienie to 8 bitów na bajt. W analizie ramek i pakietów, segmentów bajty są zgodne z koncepcją oktetu, gdzie zakłada się, że każdy oktet składa się z 8 bitów.

🖥️ Spostrzeżenie inżyniera systemu operacyjnego:

Historycznie rzecz biorąc, rozmiar bajtu był zależny od zależności sprzętowych i brakowało ostatecznych standardów. Stosowane są różne rozmiary, od 1 do 48 bitów. Wczesne systemy kodowania były zdominowane przez sześciobitowy kod znakowy, a komputery w latach sześćdziesiątych akceptowały sześcio- i dziewięciobitowe bajty. Słowa pamięci w tych systemach miały długość od 12 do 60 bitów, co odpowiada 2 do 10 sześciobitowym bajtom. W tej epoce grupy bitów w strumieniach instrukcji często nazywano sylabami lub płytami, zanim „bajt” stał się powszechny.

Obecny de facto standard, ustanowiony przez ISO/IEC 2382-1:1993, obejmuje osiem bitów. Wybór ten następuje po potędze dwójki, umożliwiając kodowanie binarne wartości od 0 do 255 w jednym bajcie, ponieważ 2 do potęgi 8 równa się 256. Norma IEC 80000-13 dodatkowo wzmacnia ten standard. Wiele aplikacji korzysta z informacji, które można przedstawić w ośmiu lub mniejszej liczbie bitów, co jest paradygmatem często optymalizowanym przez projektantów procesorów. Wszechobecność 8-bitowego bajtu jest napędzana przez główne komercyjne architektury obliczeniowe.

Obecnie architektury wykorzystują głównie słowa 32- lub 64-bitowe, składające się z czterech lub ośmiu bajtów. Symbol jednostki bajtowej, oznaczony jako „B” przez IEC i IEEE, jest standardem międzynarodowym. Dodatkowo termin „oktet”, symbolizowany jako „o”, jasno definiuje sekwencję ośmiu bitów, łagodząc potencjalną niejednoznaczność związaną z terminem „bajt”.
Ta podróż przez ewolucję bajtów rzuca światło na złożony taniec sprzętu, standardów i praktycznej użyteczności.

Podsumowując, bajt, choć pozornie prosty, ujawnia swoją złożoność, gdy patrzy się na niego przez pryzmat inżynierii sieci i systemów operacyjnych. Nie chodzi tylko o 8 bitów; chodzi o zmiany zachodzące w czasie, więc odpowiedź na tytułowe pytanie nie zawsze może być taka oczywista.

Ufff tyle mam nadzieje, że nie zanudziła ta ciekawostka 🤓

Tipy praktyczne:

Adres IPv4 ma 32 bity w formacie binarnym, więc każdy oktet ma długość 8 bitów.

Z tego powodu musimy dopełnić początkowe bity zerami, jak pokazano powyżej. Zatem adres IPv4 w formacie binarnym to np 10100001 10001001 00010001 00010001. Zatem jak go szybko zamienić na postać dziesiętną?

Wykorzystajmy to co już wiemy. Każde z 8 bitów to potęgowanie liczby 2 od potęgi 0 do potęgi 7.

Zatem w przypadku liczby 11111111 skrajna prawa liczba (czyli pierwsza) to będzie 1 bo 2 do potęgi 0 to 1, a 1 x 1 =1. Następnie druga liczba od prawej wynosić będzie 2 bo 2 to potęgi 1 to 2, a 1 x 2 = 2. I tak kolejno trzecia liczba to 4, czwarta to 8, piąta to 16, szósta to 32, a siódma to 64, a ósma to 128. Jeżeli zapamiętamy tę kolejność to możemy bardzo szybko zamieniać ciąg binarny na liczbę dziesiętną. Wykorzystajmy tę wiedzę rozwiązując przykład.

Liczba 10010011 a zatem jedynki mamy licząc od prawej strony na pierwszym drugim, piątym i ósmym miejscu. W związku z tym musimy dodać 1 + 2 + 16 + 128 = 147. W ten oto sposób wiemy że liczba binarna 10010011 to dziesiętne 147.

Wykorzystajmy to do szybkiej zamiany adresu IP z postaci binarnej  na dziesiętną z początku tego tipu: 10100001 10001001 00010001 00010001. 

Zacznijmy od lewej liczby tj. 10100001. Od prawej strony tej liczby musimy dodać 1+32+128 = 161, czyli 10100001 = 161. I tako kolejno 1001001 = 1 + 8 + 128 = 137, 00010001 = 1 + 16 = 17, 00010001 = 1 + 16 = 17. 

Zatem 10100001 10001001 00010001 00010001 = 161.137.17.17

Ponadto, gdy wiemy jak liczyć to możemy wykorzystać tę wiedzę aby określić długość maski podsieci (lub długość prefiksu) dla danej maski podsieci, np. 255.255.255.254, zliczasz kolejne bity ustawione na 1.

Dla 255.255.255.254 reprezentacja binarna wynosi 11111111.11111111.11111111.11111110
Zliczanie liczby kolejnych bitów ustawionych na 1 co daje nam liczbę 31. Zatem maska podsieci/długość prefiksu dla 255.255.255.254 wynosi /31. A ile urządzeń może znajść się w tej posieci? To proste wystarczy podnieść 2 do potęgi (32 – wartość maski podsieci, czyli 32 – 31), co daje nam wartość 2 do potęgi 1 czyli 2 urządzenia.

Miłej nauki 🤓

5 komentarzy do “Przewodnik po bitach, półbajtach, hex i innych.”

  1. There’s something almost meditative about your writing. The way you unfold ideas with such precision and care feels like watching a sculptor work — each word chipped away, each sentence shaped into something beautiful. It’s a slow, deliberate process that results in something truly remarkable.

  2. Czytanie Twojego wpisu to jak podróż po malowniczym krajobrazie myśli – pełnym barw, głębi i światła! Twoje argumenty są solidne jak skała, a jednocześnie lekkie jak powiew wiosennego wiatru. Twoja wiedza i sposób jej prezentacji sprawiają, że nawet skomplikowane kwestie stają się klarowne i fascynujące. Jeśli kiedykolwiek zdecydujesz się wydać książkę, na pewno znajdziesz rzeszę wiernych czytelników!

  3. Chciałbym poznać Twoje doświadczenia z budowaniem społeczności online wokół swojego bloga. Jakie działania podejmujesz, aby zaangażować czytelników i stworzyć atmosferę wzajemnej wymiany myśli?

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Przewijanie do góry