Układy cyfrowe - systemy pozycyjne


Znany i powszechnie używany system dziesiętny liczenia jest tak zwanym systemem pozycyjnym. Spójrzmy na zapis liczby dziesiętnej pod kątem związków z podstawą systemu dziesiętnego - liczbą 10. Zauważymy, że system dziesiętny operuje dziesięcioma znakami graficznymi (od 0 do 9) zwanymi cyframi. Każda cyfra reprezentuje pewną wartość w zapisie liczby dziesiętnej. Lecz wartość nie zależy wyłacznie od niej samej.

Przykład 1.
a) 137,25
b) 713,48
c) 342,73
w punkcie a) wartość wskazywana przez cyfrę siedem jest równa siedmiu jednostkom, w punkcie b) siedmiuset jednostkom, a w punkcie c) siedmiu dziesiątym jednostki. Jak sami widzimy, o wartość cyfry w systemie dziesiętnym decyduje jej pozycja - stąd nazwa: system pozycujny. Każdej pozycji jej przypisana jej waga (czyli znaczenie). W systemie dziesiętnym mówimy o pozycji jednostek, dziesiątek, setek, tysięcy itd. (analizując liczbę na lewo od przecinka) lub dzięsiętnych części, setnych itd. (analizując liczbę na prawo od przecinka). Związek pomiedzy podstawą systemu (10) i wagą danej pozycji jest nastepujący:
Jeżeli poszczegolnym pozycjom przyporządkujemy liczby zgodnie z odwrócona osią liczbową to związek ten wyrazi się zaleznoscią:

w = pk

gdzie: w - waga pozycji k; p - podstawa systemu; k - pozycja.

3

2

1

0

-1

-2

-3

Numer pozycji

103

102

101

100

10-1

10-2

10-3

Waga pozycji w systemie "10"

Zapis liczby w systemie pozycyjnym jest więc umownym zapisem współczynników (cyfr) przy odpowiednim potęgach podstawy systemu. Dla systemu dziesiętnego postać liczby bezie więc następująca:

L10 = anan-1...a1a0, a-1a-2...a-k = i=n∑i=-k ai10i

przy czym współczynniki (cyfry)
ai∈{0,1,...,9}

Przyjęcie za podstawę systemu liczby 10 jest kwestią czysto umowną. Równie dobrze może to być każda inna liczba p. Wszystkie powyższe spostrzeżenia poczynione dla systemu dziesiętnego odpowiednio przenoszą się na dowolny system pozycyjny o podstawie p. Podstawa p okresla w sposób kompletny system.

I tak w systemie pozycyjnym o podstawie p:
- liczba znaków graficznych (cyfr) potrzebnych do zapisu dowolnej liczby wynosi p,
- wagi poszczególnych pozycji mają wartość pk, gdzie k jest pozycją cyfry liczoną zgodnie tabela przestawiona powyżej

Tak więc dowolna liczba zapisana w dowolnym systemie pozycyjnym będzie miała postać:

Lp = anan-1...a1a0, a-1a-2...a-k = i=n∑i=-k aipi

przy czym współczynniki ai należą do p-elementowego zbioru znaków graficznych (cyfr).

To stałe zaznaczanie, że współczynniki są znakami graficznymi (cyframi), ma na celu odejście od stereotypu istnienia tylko dziesięciu cyfr (którego tak cierpliwie uczyliśmy się w przedszkolu). Dla potrzeb systemu dziesiętnego i każdego innego o podstawie p<10 ten zbiór znaków jest wystarczający. Chcąc zbudować np. system szesnastrkowy (heksadecymalny), musimy zdefiniować 16 symboli - cyfr. Zwykle wykorzystuje się 10 cyfr systemu dzięsiętnego, a dlareprezentacji cyfr 10, 11, 12, 13, 14 i 15 przyjęto używać kolejne litery alfabetu A, B, C, D, E i F.

Istnieje wiele sposobów konwersji liczb dziesiętnych na liczby zapisane w systemie pozycyjnym o podstawie p, Jeden z nich przedstawie w poniższym przykładzie. będzie to system dwójkowy (binarny), czyli system o podstawie p = 2.

Przykład 2.
Zamieniamy liczbe 317,45 (zapisaną w systemie dziesietnym) na liczbe zapisaną w systemie dwójkowym.

Zamiany dokonujemy iddzielnie dla części całkowitej i oddzielnie dla części ułamkowej.

LSB

317:2=

158+r

1

158:2=

79+r

0

79:2=

39+r

1

39:2=

19+r

1

19:2=

9+r

1

9:2=

4+r

1

4:2=

2+r

0

2:2=

1+r

0

1:2=

0+r

1

MSB

Wynik dla części całkowitej: 31710 = 1001111012

MSB

0,45*2=

0,9

0,9*2=

1,8

0,8*2=

1,6

0,6*2=

1,2

0,2*2=

0,4

0,4*2=

0,8

0,8*2=

1,6

0,6*2=

1,2

*

MSB

Wynik dla cześći ułamkowej: 0,4510 = 011100112

Wynik: 317,4510 = 100111101,011100112

Jak widzimy zamiana części całkowitej polega na dzieleniu jej przez podstawę systemu (dla systemu dwójkowego podstawa p = 2). Wynik dzielenia zapisujemy w postaci: część całkowita + reszta z dzielenia.

Zauważmy, że reszta z dzielenia będzie zawsze mniejsza niż liczba p. W niniejszym przykładzie reszty te mogą przyjmować tylko dwie wartości: 0 lub 1. Ciąg tych reszt jest zapisem dwójkowym liczby dziesiętnej poddawanej konwersji. Należy jedynie zapamiętać, że pierwsza reszta jest cyfrą z najmłodszej pozycji (pozycji o najmniejszej wadze dla części całkowitej). Jest to tak zwany najmniej znaczący bit - LSB (ang. Least Significant Bit).

Zamiana części ułamkowej polega na mnożeniu jej przez podstawę systemu p. Wynik mnożenia zawiera zawsze część całkowitą mniejszą od p oraz jakąś część ułamkową. Uzyskany ciąg części całkowitych jest zapisem dwójkowym ułamkowej części liczby dzięsiętnej poddawanej konwersji. Należy jedynie zapamiętać, żę część całkowita uzyskana w pierwszym mnożeniu odpowiada najbardziej znaczącmu bitowi - MSB (ang. Most Significant Bit), a uzyskana w ostatnim bitowi LSB. Pomiędzy liczbą 0,4510 a liczbą 0,01110011...2 nie można postawić znaku równości, gdyż ciąg cześci całkowitych generowanych przez powyższy algorytm jest ciągiem nieskończonym. Nie jest to cecha tego właśnie algorytmu, lecz wynika z wybranej do przykładu liczby dzięsiętnej. Zauważmy jednak, że kolejna jedynka, która pojawi się na pozycji "-11" będzie miałą wagę 2-11 = 1/2048. Uzyskamny wynik jest więc pewnym przybliżeniem liczby dziesiętnej. Ta "niedokładność" nie jest jednak cechą systemu dwójkowego czy każdego innego niż dziesiętny. W systemie dziesiętnym także bardzo często musimy zadowolić się jedynie przybliżeniem pewnych liczb (np. pierwiastek kwadratowy z liczby 2), gdyż ich dokładny reprezentant dziesiętny nie istnieje (zawiera niskończenie wiele pozycji).

Liczby dwójkowe są zawsze "dłuższe" (wymagają większej liczby pozycji) niż odpowiadające im liczby dziesiętne. Jednak w systemach cyfrowych pamiętane, przetwarzanie i przesyłanie nawet licznych, ale prostych bo dwustanowych sygnałow, jest zawsze łatwiejsze niż realizowanie tych samych operacji z mniejszą liczbą sygnałow wielowartościowych.

Liczby dwójkowe są zwykle długie, co utrudnia ich zapis, zwiększa możliwośc pomyłek i wydłuża czas przy opisywaniu sygnałów w fizycznym systemie cyfrowym. Aby uniknąć tych wad, wprowadza się niekiedy grupowanie trzech lub czterech cyfr dwójkowych i oznacza je jednym symbolem. Łatwo zauważyć, że sprowadza się to do wyrażenia danej liczby w systemie ósemkowym lub szesnastkowym.

Przykład 3.

8710 = 10101112

001

010

111

= 1278

1

2

7


8710 = 10101112

0101

0111

= 5716

= 57H

5

7

W wielu urządzeniach cyfrowych operuje się liczbami dwójkowymi o 8 cyfrach dwójkowych. Grupa takich ośmiu cyfr to tak zwany bajt (ang. byte). Cyfra dwójkowwa jest zaś często nazywana bitem (ang.bit), czyli bajt to 8 bitów. Bit jest najmniejszą porcją informacji.

W układach cyfrowych występuje często konieczność wykonywania operacji arytmetycznych na sygnałach, przedstawionych w postaci licz dwójkowych. Reguły obowiązujące przy realizacji podstawowych działań arytmetycznych (takich jak: dodawanie, odejmowanie, mnożenie czy dzielenie) na liczbach dwójkowych są bardzo proste i nie różnią się niczym od tych stosowanych w systemie dzięsiętnym, jeżeli uwzględnimy tylko wpływ innej podstawy systemu.

Przykład 3.

9

    

1001

+_5

+_0101

14

1110


9

    

1001

-_5

    

-_0101

4

    

0100




Realizacja działań arytmetycznych na liczbach w zapisie dwójkowym jest, jak widać, banalna :). Zbędną staje się także znajomość tabliczek mnożenia, która w pierwszych latach szkoły podstawowej sprawiała takie problemy.
Mimo to ludzie na pewno nie zaczna posługiwać się systemem dwójkowym - ze względu na rozwlekłość takiej reprezentacji liczb.


www.piotrsog.prv.pl