Programowanie Główna arrow assembler arrow Systemy liczenia


Systemy liczenia
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.


site copyright © http://www.e-kursy.com
dziękuję | i | informatyk | odzyskiwanie danych RAID | wyszukiwarka mp3
Akcesoria GSM | Yerba Mate | mp3 | Garnki stalowe | monitory lcd | prace magisterskie | Firma | Krzesła | Telefony komórkowe | tekst piosenki