systemy liczbowe, operacje arytmetyczne

Transkrypt

systemy liczbowe, operacje arytmetyczne
Wprowadzenie do architektury komputerów – systemy liczbowe, operacje
arytmetyczne
1. Bit
Pozycja rejestru lub komórki pamięci służąca do przedstawiania (pamiętania) cyfry
w systemie (liczbowym) dwójkowym. Może przyjmować dwa stany 0 lub 1.
3. Bajt
Ciąg ośmiu bitów, stanowiący najmniejszą adresowalną porcję informacji,
przechowującą jeden znak alfanumeryczny lub liczbę z zakresu 0-255.
2.Słowo
Ciąg bitów, stanowiących porcję danych.
Ustalona dla danego komputera (procesora) pojemność komórki pamięci (rejestru).
Najczęściej słowo jest wielokrotnością bajtu.
Konwersja systemów liczbowych
dzielenie przez podstawę
dodawanie i odejmowanie potęg 2
Operacje przesunięcia i obracania – związek z mnożeniem i dzieleniem przez 2
Zapis liczb w NKB
Dodawanie – przeniesienie
Odejmowanie - pożyczka
Mnożenie
5x6=30
dodaj 6
i przesuń w prawo
dodaj 0
i przesuń w prawo
dodaj 6
0000 0101 0110
0110
0110 0101
0011 0010
0000
0011 0010
0001 1001
0110
i przesuń w prawo
dodaj 0
i przesuń w prawo
0111 1001
0011 1100
0000
0011 1100
0001 1110
Liczby ułamkowe stałopozycyjne
0011,0101 = 3 i 5/16
Kod uzupełnień do 2 (U2)
W dwójkowym systemie liczbowym najstarszy bit liczby n-cyfrowej ma wagę 2n−1. Jedyną
różnicą, jaką wprowadza tu kod U2, jest zmiana wagi tego bitu na przeciwną (−2n−1). Wartość
dziesiętną liczby U2 wyraża wzór:
Najstarszy bit koduje wartość liczby, ale jest też nazywany bitem znaku, ponieważ świadczy o
znaku liczby:
•
•
jeśli jest ustawiony (=1), to liczba jest ujemna,
jeśli jest skasowany (=0), to liczba jest dodatnia lub równa 0.
Zwiększając obszar zajmowany przez liczbę w kodzie U2 (np. z jednego bajta na dwa),
dodawany obszar wypełnia się bitem znaku.
Kod U2 jest może być również użyty do przechowywania liczb ułamkowych o stałej pozycji
przecinka. Zapisywany jest wówczas licznik ułamka o mianowniku będącym potęgą liczby
dwa (2n, np. 2, 4, 8, ...), mianownik nie jest zapisywany. Przy mnożeniu i dzieleniu takich
liczb wymagane są korekty, jeśli wynik ma mieć przecinek w tym samym miejscu.
Tworzenie liczby ujemnej U2:
• negacja
• dodanie 1
Dodawanie w U2 – normalnie
Odejmowanie w U2 – dodawanie liczby przeciwnej
Dodawanie i odejmowanie liczb U2
Dodawanie i odejmowanie w U2 odbywa się standardową metodą – traktujemy liczby jako
zwykłe liczby binarne (dodatnie), dodajemy je i odejmujemy, a wynik otrzymamy w kodzie
U2. Dodawanie i odejmowanie odbywa się łącznie z bitem znaku. Jeśli przeniesienie (lub
pożyczka dla odejmowania) wystąpi tylko na bit znaku albo poza niego (nie jednocześnie lub
wcale), wówczas mamy do czynienia z przepełnieniem. Oznacza to że wynik nie mieści się w
kodowanym zakresie.
Przykład
W precyzji do części czwartych, w ośmiobitowej reprezentacji, liczby są kodowane:
Dodawanie
11010001
+11100010
-------110110011
Dziewiąty bit wyniku jest odrzucany przy określaniu liczby (jest on używany tylko do
określenia czy nastąpiło przepełnienie). Tu wystąpiło przeniesienie na bit znaku i z niego,
dlatego przepełnienie nie wystąpiło – wynik nie przekroczył zakresu i jest poprawny.
Odejmowanie
Odejmowanie jest realizowane, jak odejmowanie w naturalnym kodzie dwójkowym. Przykład
z reprezentacją do części czwartych:
11010001
−11100010
-------111101111
Odejmowanie może być zamienione na dodanie liczby przeciwnej, Powyższe działanie
realizowane jako wzięcie liczby przeciwnej i dodawanie
przeciwna do 11100010
11010001
+00011110
-----------11101111
= 00011110
Liczby zmiennoprzecinkowe
Wartość liczby zmiennoprzecinkowej jest obliczana według wzoru:
gdzie:
•
•
•
•
S (ang. sign) – znak liczby, 1 lub -1
M (ang. mantissa) – znormalizowana mantysa, liczba ułamkowa
B (ang. base) – podstawa systemu liczbowego (2 dla systemów komputerowych)
E (ang. exponent) – wykładnik, liczba całkowita
Mantysa jest znormalizowana, tj. należy do przedziału
1. Mantysa należy do przedziału [1,2), jest więc postaci 1.xxxxx.... (x – bit o
dowolnej wartości). Ponieważ część całkowita jest znana, i równa zawsze 1, przeto nie
jest zapamiętywana, co daje dodatkowy bit na część ułamkową.
2. Ponieważ znak liczby jest zapamiętywany na jednym bicie, przeto otrzymanie modułu
i wartości przeciwnej wymaga, odpowiednio, wyzerowania tego bitu (logiczna
operacja AND), lub zmiany na wartość przeciwną (logiczna operacja XOR).
Dodawanie i odejmowanie
Załóżmy że chcemy dodać lub odjąć dwie dodatnie liczby zmiennoprzecinkowe:
oraz
, przy czym
.
Mnożenie i dzielenie
Mając dane liczby zmiennoprzecinkowe
i
: