32 Zrozumieć Asembler
nie zwykłego kalkulatora (który potrafi liczyć w systemie szesnastkowym) czy kalkulatora programowego, np. z programu Sidekick.
Jednak najlepszym narzędziem jest zwykły czterofunkcyjny kalkulator z pamięcią. Metody przekształceń, które opiszę niżej, wykorzystują zawsze tego rodzaju kalkulator. To, czego teraz spróbuję Ciebie nauczyć, to przekształcanie podstawy systemu liczbowego bez potrzeby długich dodawań czy dzieleń w systemie dziesiętnym.
Jak to zobaczysz za chwilę, przekształcanie liczby szesnastkowej na dziesiętną jest znacznie łatwiejsze niż w przeciwnym kierunku. Liczbę szesnastkową na dziesiętną przekształcamy lak, jak to do tej pory robiliśmy na rysunkach analizy liczb. Ustalamy wartość dziesiętną dla każdej kolumny w liczbie szesnastkowej, a następnie dodajemy te wartości dziesiętne tworząc liczbę dziesiętną.
Zacznijmy od prostego przykładu. Mamy szesnastkową liczbę 7A2. Zaczynamy liczyć od prawej kolumny. W każdym systemie liczbowym jest to kolumna jednostek. Mamy tu dwie jednostki tak, że wprowadzamy 2 do kalkulatora i zapamiętujemy w jego pamięci (lub wciskamy przycisk +).
Tyle, jeśli chodzi o kolumnę jednostek. Pamiętaj, że masz cały czas do czynienia z wartościami kolumn w systemie szesnastkowym. Każda następna kolumna ma wartość 16 razy większą niż poprzednia kolumna, czyli kolumna z prawej. Przechodzimy na lewo do drugiej kolumny. Druga kolumna (licząc od prawej strony) jest kolumną o wartości 16. (W razie wątpliwości zajrzyj na rys. 1.6.) W drugiej kolumnie, czyli na drugiej pozycji naszej liczby, mamy A. Heksadecymalne A odpowiada dziesiętnie 10. Łączny dziesiętny odpowiednik dla tej kolumny będzie równy 16* 10=160. Wykonaj to mnożenie i wynik dodaj do liczby istniejącej w pamięci kalkulatora.
Teraz przenieśmy się do trzeciej kolumny licząc od prawej strony. W naszej liczbie na trzeciej pozycji jest 7. Wartość dla trzeciej kolumny wynosi 16* 16, czyli 256. Pomnóż na kalkulatorze 256 przez 7 i dodaj wynik do całej sumy. Łączna suma pamięci kalkulatora powinna teraz wynosić 1954, co jest dziesiętnym odpowiednikiem he-ksadecymalnej liczby 7A2.
Wykonajmy jeszcze jedno przekształcenie, tym razem na trochę dłuższej liczbie: C6F0DB.
Zaczynamy od kolumny jednostek B* 1 = 11*1=11. Zapamiętujemy 11. Obliczamy teraz kolumnę szesnastek. D*l6= 13*16=208. Dodajemy 208 do poprzednich 11.
Przechodzimy do kolumny 256. 0*256 = 0. Idziemy dalej.
Obliczamy kolumnę 4096. ł;*4096 = 15*4096= 61 440. Dodajemy do sumy.
Obliczamy kolumnę 65536. 6*65536 = 393 216. Dodajemy do sumy.
Obliczamy kolumnę 1048576. 0*1048576=12*1048576 = 12 852 912. Dodajemy do sumy.
Suma 13 037 787 jest wynikiem końcowym.
Spróbuj teraz samodzielnie obliczyć dziesiętny odpowiednik he-ksadccymalnej liczby 1A55BE.
Przeliczanie z systemu dziesiętnego na system szesnastkowy jest niestety trudniejsze i wymaga więcej liczenia. Tutaj musimy ustalać, która kolumna szesnastkowa (możliwie największa) będzie się jeszcze mieścić w liczbie dziesiętnej. A to już wymaga bardziej złożonych obliczeń. Ale spróbujmy to zrobić.
Zacznijmy od stosunkowo prostej liczby 449. Tutaj przyda się kalkulator. Wpisz liczbę 449 i zapamiętaj ją w pamięci kalkulatora.
Musimy teraz ustalić najwyższy numer kolumny szesnastkowej, której wartość co najmniej jeden raz mieści się w tej liczbie. W tabeli 1.6 znajdujemy 256, która jest największą potęgą 16, czyli największą wartością dla kolumn szesnastkowych, która przynajmniej raz mieści się w liczbie 449. Następna potęga liczby 16, czyli kolumna o wartości 512, jest oczywiście większa niż 449.
Ustalimy teraz ilokrotnie wartość 256 mieści się w liczbie 449-Wykonamy dzielenie 449/256=1.7539- Więcej niż jeden, ale mniej niż dwa. Tak więc 449 zawiera jedynie raz wartość 256. Zapisz liczbę 1 na papierze. Ale nie wprowadzaj tej liczby do kalkulatora. Przy przeliczaniu w tym kierunku w kalkulatorze nie zapamiętujemy żad-