Zrozumieć Asembler
Liczby binarne podlegają wszystkim tym samym regułom, jakie były do tej pory omawiane. Tak samo zamiana liczb binarnych na dziesiętne i odwrotnie podlega tym samym zasadom, które były omówione przy liczbach szesnastkowych w punkcie 1.5.
W liczbach binarnych więcej problemu stwarza dokładne policzenie pozycji, czyli numeru kolumny w liczbie, niż same wartości, które są tylko 0 lub 1. Tablica 1.7 przedstawia wartości liczb binarnych aż do 32 miejsc.
Jeden rzut oka na tę potężną piramidę może sugerować, żc przesadziłem trochę z tą tablicą, bo takich liczb w programowaniu nie ma. Niestety, mylicie się, bo 32-bitowy mikroprocesor, jak np. 80386, połyka takie liczby tysiącami przy jednym elektronicznym mrugnięciu, a na najdrobniejszy posiłek zajada miliony takich liczb. Natomiast tak długie liczby faktycznie stanowią problem dla programisty i tu przydałby się jakiś skrótowy zapis. Taki zapis istnieje i nawet będziesz zdziwiony, jaki to jest zapis.
Tabela 1.7. Kolumny liczb binarnych jako potęga potęgi 2
liczba dwójkowa potęga 2 dziesiętnie
1 |
= |
2° |
— |
1*2 = |
10 |
— |
21 |
— |
2*2 = |
100 |
= |
21 |
— |
4*2 = |
1000 |
— |
2» |
— |
8*2 = |
10000 |
= |
24 |
— |
16*2 = |
100000 |
— |
25 |
— |
32*2 = |
1000000 |
= |
26 |
— |
64*2 = |
10000000 |
= |
27 |
— |
128*2 = |
100000000 |
— |
2% |
= |
256*2= |
1000000000 |
29 |
— |
512*2 = | |
10000000000 |
— |
210 |
— |
1024*2 = |
100000000000 |
— |
211 |
= |
2048*2 = |
1000000000000 |
— |
212 |
= |
4096*2 = |
10000000000000 |
— |
213 |
— |
8192*2= |
100000000000000 |
— |
2” |
= |
16394*2= |
1000000000000000 |
— |
2!5 |
= |
32768*2 = |
10000000000000000 |
= |
2“ |
= |
63536*2= |
100000000000000000 |
— |
217 |
= |
131072*2= |
1000000000000000000 |
— |
218 |
— |
262144*2= |
10000000000000000000 |
— |
219 |
= |
524288*2= |
100000000000000000000 |
— |
220 |
— |
1048576*2= |
1000000000000000000000 |
ss |
221 |
= |
2097152*2= |
Liczby dwójkowe
10000000000000000000000 |
= |
222 |
4194304*2= | |
100000000000000000000000 |
= |
2» |
= |
8388608*2= |
1000000000000000000000000 |
— |
224 |
16777216*2= | |
10000000000000000000000000 |
= |
22$ |
= |
33554432*2= |
100000000000000000000000000 |
— |
2 26 |
67108864*2= | |
1000000000000000000000000000 |
= |
227 |
= |
134217728*2= |
10000000000000000000000000000 |
= |
22* |
268435456*2= | |
100000000000000000000000000000 |
229 |
= |
536870912*2= | |
1000000000000000000000000000000 |
= |
230 |
1073741824*2= | |
10000000000000000000000000000000 |
= |
23‘ |
= |
2147483648*2= |
100000000000000000000000000000000 |
232 |
4294967296 itd. |
Po liczbach binarnych dla odróżnienia ich od dziesiętnych należy pisać literę B. Nic jest tak bezwzględnie konieczne jak w przypadku liczb hcksadecymalnych, bo na ogół liczby binarne wyróżniają się swoim wyglądem. Czasami jednak może to być niezbędne.
Przekształcanie liczb binarnych na ich dziesiętne odpowiedniki przeprowadza się w taki sam sposób jak wr przypadku liczb heksadc-cymalnych, tylko znacznie prościej. Tutaj nic musisz się zastanawiać, ilokrotnic wartość danej kolumny mieści się w tej liczbie. W liczbach dwójkowych warLość danej kolumny albo występuje, albo w ogóle nie występuje.
Przyjrzyjmy się temu bliżej na prostym przykładzie. Przekształćmy liczbę binarną 11011010B na jej dziesiętny odpowiednik. Zaczynamy od strony prawej (w kierunku do lewej), wykorzystując tabelę 1.7. Jeśli dana kolumna zawiera 1, to zapisujemy wartość dla danej kolumny Jeśli występuje tam 0, pomijamy tę kolumnę.
Kolumna 0 (skrajna, pierwsza z prawej) zawiera cyfrę 0, pomijamy
te-
Kolumna 1 zawiera 1. Zapisujemy 2, które jest wartością tej kolumny.
Kolumna nr 2 zawiera 0, pomijamy ją.
Kolumna 3 zawiera 1. Wartość dla tej kolumny wynosi 25, czyli 8. Dodajemy 8 do poprzedniej sumy.
Kolumna 4 zawiera 1. Wartość dla tej kolumny wynosi 24, czyli 16. Dodajemy 16 do sumy.