Zagadka: ile cyfr ma system liczenia, którego używamy? To chyba oczywiste - 10: 0,1,2,3,4,5,6,7,8,9. A co, gdyby miał np. dwie? 0 i 1 ? Wtedy poszczególne liczby wyglądałyby tak:
0 cyfr - 2 cyfry 0 - 0 1 - 1 2 - 10 3 - 11 4 - 100 5 - 101 6 - 110 7 - 111 8 - 1000 9 - 1001 10 - 1010 11 - 1011 12 - 1100 itd..
Taki właśnie system ma w podstawie 2 cyfry, wiec nazywa się dwojkowym(binarnym). System który ma w podstawie 10 nazywa się dziesiętnym, taki który ma w podstawie 8 nazywa się osemkowym, a ten zaś, który ma w podstawie trzy nazywa się trójkowym. Ludzie posługują się systemem dziesiętnym, gdyż tak im jest najłatwiej - maja 10 palcow u rak (no.. wiekszosc z nich ;-). Nie zawsze tak jednak było. Kiedyś używali oni systemu sześćdziesiętnego (!), gdyż 60 l ma wiele dzielników. Komputery zaś jako, ze maja dwa \'palce\' korzystają z systemu binarnego. Różnica polega tylko na tym, ze palce zastępują im obwody i prąd. Jeśli w obwodzie płynie prąd to mamy do czynienia z jedynka , w przeciwnym wypadku - z zerem. Pamięć komputera składa się z jednostek, które mogą przyjmować albo 1, albo 0. Osiem takich jednostek tworzy bajt, który może przyjąć wartości od 0 do 255. Dlaczego 255? Dlatego, ze 11111111 binarnie to właśnie 255. Warte zauwazenia jest to , ze aby rozrozniac poszczegolne systemy umieszczamy na końcu liczb zapisanych w nich pierwsza ich literę. 111b to 111 binarnie, 111o to 111 ósemkowo (oct) itp. Systemu dziesiętnego się nie oznacza. Jeśli chciałbyś przetłumaczyć jakąś liczbę z jednego systemu na system dziesiętny to skorzystaj z tego, że:
Dla systemu o podstawie N: - pierwsza cyfra jest rowna dziesietnie 1*cyfra. - druga cyfra jest rowna dziesietnie N*cyfra. - trzecia cyfra jest rowna dziesietnie N^2*cyfra - X-ta cyfra jestr rowna dziesietnie N^(X-1)*cyfra
(^ oznacza potegowanie). Zgodnie z tym możesz już obliczyć np. wartość 110110b:
110110b = = 2^5*1+2^4*1+2^3*0+2^2*1+2*1+0 = = 32+16+4+2 = = 54
Oczywiście prawie nikt tego w ten sposób nie robi. Jeśli masz Windows to możesz użyć do tego standardowego kalkulatora przełączonego w widok|profesjonalny. Oczywiście systemy nie ograniczają się do tych o podstawie dziesięciu. Mogą być także np. szesnastkowe (hex). W przypadku systemu szesnastkowego mamy do czynienia ze \'standardowymi\' cyframi, oraz pierwszymi pięcioma literami alfabetu:
dec - hex 1 - 1 ... - ... 9 - 9 10 - A 11 - B 12 - C 13 - D 14 - E 15 - F 16 - 10 17 - 11 ... - ... 25 - 19 26 - 1A 27 - 1B ... - ... 255 - FF
Jak zauważyłeś (albo powinieneś zauważyć ;-) 255 jest równe FFh. Bajt może przyjąć wartości od 0 do FFh. Jako, ze FFh łatwiej i szybciej jest zapisać niż 255 ludzie wola przy operacjach na bajtach, podwójnych bajtach itp. korzystać właśnie z tej formy zapisu. W końcu łatwiej jest napisać FFFFh niż 65535, czyż nie? Popatrz na pozniższy przykład:
1 2 3 4 5 6 7
| asm mov ax,65535 mov bx,$FFFF cmp ax,bx jnz @blad mov cx,$ABCD @blad: |
JNZ ETYKIETA sprawdza, czy ZF jest ustawione (tak jak JZ ETYKIETA), a jeśli nie to skacze do podanej etykiety. W powyższym przykładzie polecenie mov cx,$ABCD zostanie wykonane. Warto jeszcze podkreslic, ze w Turbo Pascalu, aby oznaczyć zapis szesnastkowy należy przed liczbą postawić znak $. Pascal nie akceptuje literki h. Uhh.. To wszystko. Powtórz to jeszcze raz, bo to są podstawy.
|