Konwersja liczb z systemu binarnego na szesnastkowy - metoda baz skojarzonych (implementacja)
Zamiana z systemu binarnegosystemu binarnego na system szesnastkowysystem szesnastkowy może być przeprowadzana na różne sposoby. Jeden z nich wykorzystuje bazy skojarzone.
Algorytm zamiany liczby z systemu binarnego na szesnastkowy wykorzystujący bazy skojarzone
Aby skonwertować naturalną liczbę binarną na zapisaną w systemie szesnastkowym, możemy skorzystać z faktu, że mamy do czynienia z systemami liczbowymi o bazach skojarzonych. Ponieważ podstawa systemu heksadecymalnego (16) to czwarta potęga podstawy systemu binarnego (2), do zapisania jednej cyfry heksadecymalnej potrzebujemy dokładnie 4 cyfr binarnych. Zapiszmy algorytm, w którym skorzystamy z tej zależności.
Zacznijmy od zapisania zmiennych. Zmienna liczba_binarna przechowuje wartość liczby zapisanej w systemie dwójkowym. Zmienna liczba_szesnastkowa przechowuje wartość liczby po konwersji na system szesnastkowy.
Na początku upewniamy się, że liczba cyfr przetwarzanej liczby binarnej będzie wielokrotnością liczby 4. W przeciwnym wypadku ustalamy liczbę zer, o które musimy uzupełnić liczbę, aby składała się z czterocyfrowych bloków. W tym celu obliczamy resztę z dzieleniaresztę z dzielenia liczby cyfr przez 4 i odejmujemy tę resztę od 4. Otrzymana wartość będzie liczbą zer, które dopisujemy po lewej stronie liczby binarnej:
Każdą grupę czterech cyfr (bitów) zapisujemy w postaci jednej cyfry heksadecymalnej. Oznacza to, że musimy przemyśleć, jaka struktura danych będzie najodpowiedniejsza do zapisu czteroelementowych ciągów cyfr i odpowiadających im cyfr heksadecymalnych. Do realizacji tego zadania idealnie nadaje się słownik:
Rozpatrzymy grupy po 4 cyfry. Innymi słowy, chcemy przeanalizować grupę bitów o indeksach od 0 do 3, od 4 do 7 itd. Kolejne indeksy początkowe analizowanych grup to wielokrotności liczby 4. Skorzystamy więc z funkcji range, której trzecim parametrem jest krok wynoszący w tym przypadku 4:
W każdym przebiegu pętli chcemy przeanalizować jedną czteroelementową grupę bitów – zapiszmy ją więc do zmiennej z użyciem wycinków:
Ostatnim krokiem jest dopisanie cyfry heksadecymalnej do zmiennej liczba_szesnastkowa. W tym celu wystarczy pobrać ze słownika mapowanie napis odpowiadający wartości zmiennej bity:
Pełen kod programu wraz z wypisaniem wyniku:
Słownik
działanie, w którym dzielimy przez siebie dwie liczby całkowite, wynikiem jest liczba całkowita powstająca z odrzucenia części ułamkowej ilorazu
liczba naturalna przechowująca tę część dzielnej, która nie została wydzielona podczas dzielenia całkowitoliczbowego; dzieląc liczbę naturalną przez liczbę naturalną , otrzymujemy iloraz całkowity i resztę , zachodzi wówczas równość
(inaczej dwójkowy); pozycyjny system liczbowy o podstawie 2; do zapisu liczb wykorzystywane są dwie cyfry: 0 i 1
inaczej system binarny
(inaczej szesnastkowy); pozycyjny system liczbowy o podstawie 16; do zapisu liczb wykorzystywane są cyfry 0‑9 oraz litery A‑F