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 :