Pomoc programu WAAK 1.0 exe w formacie pdf

Transkrypt

Pomoc programu WAAK 1.0 exe w formacie pdf
Opis programu do wizualizacji algorytmów z zakresu arytmetyki
komputerowej
3.1 Informacje ogólne
Program WAAK 1.0 służy do wizualizacji algorytmów arytmetyki komputerowej.
Oczywiście istnieje wiele narzędzi typu konwertery formatu HEX na BIN, kalkulatory itp.,
ale moim celem było wizualne podejście do tematu arytmetyki komputerowej a dokładniej
pokazaniu krok po kroku drogi, jaka jest pomiędzy wprowadzeniem np. dwóch liczb
dziesiętnych a wynikiem powstałym np. z ich zsumowania.
Program może pełnić role dydaktyczną dla studentów studiów dziennych i zaocznych
uczelni krajowych kształcących się na kierunkach informatyka, elektrotechnika bądź
elektronika i telekomunikacja.
3.2 Obsługa programu WAAK 1.0
Program WAAK 1.0 jest bardzo intuicyjny w obsłudze. Starałam się, by był bardzo
przejrzysty w obsłudze, aby każdy mógł z niego korzystać. Po uruchomieniu programu
WAAK 1.0 zobaczymy okno główne programu:
Rys 3.1 Okno główne programu WAAK 1.0 – opracowanie własne
Występują tu kolejno zakładki
DEC->NKD, ZM i U2
HEX-> DEC
Działania NKD
Działania U2
Pomoc
Każda z zakładek zostanie omówiona krok po kroku.
3.2.1 Zakładka DEC->NKD, ZM i U2
Rys 3.2 Zakładka DEC->NKD, ZM i U2 – opracowanie własne
Zakładka ta dotyczy konwersji:
System dziesięty DEC na dwójkowy NKD
Dwójkowy NKD na dziesiętny DEC
Dwójkowy NKD na ZM znak moduł
Dwójkowy NKD na U2 uzupełnień do dwójki
DEC na NKD
Program ten konwertuje zarówno liczby całkowite jak i ułamkowe.
Konwersja ułamka z dziesiętnego systemu liczbowego na ułamek w naturalny kod dwójkowy
polega na powtarzaniu mnożenia ułamka przez 2. Przy wyznaczaniu kolejnych bitów ułamka
binarnego nie uwzględnia się części całkowitej (jedynki) wyniku mnożenia [3].
Konwersja licz całkowitych polega na tym, że- liczbę dzielimy przez 2 i jeżeli wynik będzie z
resztą: zapisujemy 1, jeżeli nie - zapisujemy 0. Następnie znowu dzielimy przez 2 to, co
zostało z liczby, ale bez reszty. Taki proces trwa, aż zostanie 0 (zero). Otrzymane zera i
jedynki zapisujemy w odwrotnej kolejności.
Rys 3.3 konwersja DEC na NKD – przykład –opracowanie własne
NKD na DEC
Rys 3.4 konwersja NKD na DEC – przykład –opracowanie własne
W systemie dziesiętnym używanych było dziesięć różnych cyfr do zapisu liczby o podstawie
10. W systemie dwójkowym do dyspozycji jest tylko dwie cyfry 1 i 0. Liczby w systemie
binarnym mają podstawę 2. Znak dwójkowy (0 lub 1) nazywany jest bitem. Podobnie jak w
przypadku innych systemów liczbowych każda cyfra w liczbie binarnej ma wartość zależną
od jej pozycji.
Kolejny przykłada pokazuje konwersje ułamka z systemu dwójkowego na dziesiętny.
W przypadku ułamków stosuje się ujemne potęgi:
Rys 3.5 konwersja ułamka NKD na DEC – przykład –opracowanie własne
DEC na ZM
Znak- moduł oznaczany ZM to sposób zapisu liczb całkowitych. W kodzie tym wszystkie bity
poza najstarszym mają takie samo znacznie jak w naturalnym kodzie binarnym.
Wyróżnionym bitem w tym zapisie jest znak moduł, wynosi on 0 dla liczb dodatnich lub 1 dla
liczb ujemnych.
Rys 3.6 konwersja DEC na ZM – przykład –opracowanie własne
DEC na U2
Rys 3.7 konwersja DEC na U2 – przykład –opracowanie własne
Jeśli liczba jest dodatnia to wygląda w U2 tak samo jak w systemie dwójkowym a bit znaku
ma wartość 0. Jeśli natomiast bit znaku przyjmie wartość 1, to liczba jest ujemna.
Liczbę przeciwną do danej liczby w U2 uzyskuje się najprościej przez dokonanie negacji
wszystkich bitów zapisanych w U2 a następnie do wyniku dodanie 1.
Rys 3.8 konwersja liczby ujemnej DEC na U2 – przykład –opracowanie własne
3.2.2 Zakładka HEX -> DEC
Zakładka ta dotyczy konwersji:
System dziesiętnego DEC na szesnastkowy HEX
System szesnastkowy HEX na dziesiętny DEC
Rys. 3.9 Zakładka HEX -> DEC – opracowanie własne
DEC na HEX
Rys 3.10 konwersja DEC na HEX – przykład –opracowanie własne
HEX na DEC
Rys 3.11 konwersja HEX na DEC – przykład –opracowanie własne
3.2.3 Zakładka Działania NKD
Rys. 3.12 Zakładka Działania NKD- opracowanie własne
Dodawanie NKD
Rys 3.13 Dodawanie NKD – przykład –opracowanie własne
Odejmowanie NKD
Rys 3.14 Odejmowanie NKD – przykład –opracowanie własne
„C” oznacza przeniesienie w tym przypadku pożyczkę, która może przyjmować wartości 0
lub 1. Jeśli C=1 oznacz to, że wystąpiła pożyczka, jeśli C=0 nie wystąpiła pożyczki. Dzięki
pożyczce bez problemu można odejmować większe liczy od mniejszych.
Mnożenie w NKD
Rys 3.15 Mnożenie NKD – przykład –opracowanie własne
Mnożenie to polega na:
1. Wyzerowaniu starszej części wyniku i bitu przeniesienia.
2. Za młodszą cześć wyniku przyjęciu mnożnika.
3. Przesunięciu w prawo młodszej części wyniku/mnożnika.
4. Jeśli poprzedni (ostatnio występujący) najmłodszy bit mnożnika jest ustawiony, dodać
mnożną do starszej części wyniku, zachować ewentualne przeniesienie po dodawaniu w bicie
przeniesienia.
5. Przesunąć w prawo młodszą część wyniku/mnożnik.
6. Przesunąć w prawo starszą cześć wyniku z uwzględnieniem bitu przeniesienia jako
najstarszego bitu wyniku, wychodzący bit jest wpisywany na pozycję najstarszego bitu
młodszej części wyniku/mnożnika.
7. Powtarzać czynności od punktu 4 dla wszystkich bitów mnożnika (liczba powtórzeń pętli
jest równa liczbie bitów mnożnika)[3].
Dzielenie NKD
Rys 3.16 Dzielenie NKD – przykład –opracowanie własne
3.2.4 Zakładka Działania U2
Rys 3.17 Zakładka Działania U2 - opracowanie własne
Zakładka ta obejmuje mnożenie liczb w systemie U2 metodą:
Bootha
Robertsona
Powielonego znaku
Mnożenie według algorytmu Bootha polega na:
1. Wyzerowaniu starszej części wyniku i bitu przeniesienia.
2. Za młodsza część wyniku przyjąć mnożnik.
3. a) Jeśli najmłodsza para jest kombinacja 10 to od iloczynu częściowego
odejmuje się mnożną, wynik przesuwa się o jedno miejsce w prawo.
b) Jeśli najmłodsza para jest kombinacja 01 to od iloczynu częściowego dodaje
się mnożną, wynik przesuwa się o jedno miejsce w prawo.
c) Jeżeli są to pary 00 lub 11 to nie wykonuje się żadnego działania ,tylko
przesuwa się o jedno miejsce w prawo.
Przy przesunięci w prawo bierzemy pod uwagę bit przeniesienia – wychodzący bit jest
wpisywany do bitu przeniesienia.
Należy powtórzyć tą czynność dla wszystkich bitów mnożnika.
Algorytm ten ma jedno ograniczenie, mianowicie, zwraca nieprawidłowy wynik mnożenia dla
mnożnej 100…000U2 o czym należy bezwzględnie pamiętać.
Rys 3.18 Mnożenie metodą Bootha- przykład - opracowanie własne
Sprawdzenie:
Pierwsza podana liczba to 101U2 czyli -3DEC
Druga 111U2 czyli -1DEC , po wymnożeniu daje to 000011U2 czyli 3 DEC
Mnożenie według algorytmu Robertsona
W algorytmie Robertsona liczby traktowane są jak binarne z tym, że mnożnik
pozbawia się najstarszego bitu. W wyniku mnożenia otrzymuje się pseudoiloczyn, od którego
należy odjąć poprawkę.
Rys 3.19 Mnożenie metodą Robertsona - przykład - opracowanie własne
1.Jeśli mnożnik jest dodatni a co za tym idzie najstarszy bit jest zerem wtedy poprawka
wynosi 0, jednak, gdy mnożnik jest ujemny poprawka jest różna od zera. Ilości bitów
poprawki jest tak sama jak pseudoiloczynu i stanowi on zaczynając od lewej mnożną
pozostałe bity to zera.
2. Podkreślone bity to „dopełnienia”, stosuje się je przy dodawaniu przesuniętych
względem siebie wyników iloczynów poszczególnych bitów mnożnika przez mnożną.
Dopełniamy taką cyfrą, jaka występuje w najstarszym bicie w danym wierszu, jeśli jest to
1 to dopełniamy samymi jedynka, jeśli 0 to samymi zerami.
Mnożenie metodą powielonego znaku
Przed wykonaniem tej operacji arytmetycznej należy dwukrotnie zwiększyć długość
słowa każdej z liczb. Jeśli te są różnej długości to przyjmuje się podwójną długość
dłuższej liczby. Należy powielić bit znaku na wszystkie dodatkowe pozycje. Tak
przygotowane dane mnoży się jak w naturalnym kodzie dwójkowym. Tylko młodsza
cześć otrzymanego wyniku mnożenia niesie użyteczne informacje. Bierze się pod uwagę
bity w liczbie równej sumie liczby bitów oryginalnej mnożnej i mnożnika. Pozostałe
(starsze) bity należy pominąć, gdyż interpretacja wszystkich bitów może prowadzić do
błędnego wyniku [3].
Rys 3.20 Mnożenie metodą powielonego znaku - przykład - opracowanie własne

Podobne dokumenty