Podstawy Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 3 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 1 / 42
Reprezentacja liczb całkowitych reprezentacja znak - moduł, w której wartość najbardziej znaczacego bitu określa znak liczby (jeśli 0, to +; jeśli 1, to ). bit 7 6 5 4 3 2 1 0 waga znak 64 32 16 8 4 2 1 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 2 / 42
Reprezentacja liczb całkowitych reprezentacja znak - moduł, w której wartość najbardziej znaczacego bitu określa znak liczby (jeśli 0, to +; jeśli 1, to ). bit 7 6 5 4 3 2 1 0 waga znak 64 32 16 8 4 2 1 reprezentacja uzupełnienia do dwóch (U2), w której wartość najbardziej znaczacego bitu określa znak liczby (-128). bit 7 6 5 4 3 2 1 0 waga 128 64 32 16 8 4 2 1 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 2 / 42
Reprezentacja liczb całkowitych reprezentacja znak - moduł, w której wartość najbardziej znaczacego bitu określa znak liczby (jeśli 0, to +; jeśli 1, to ). bit 7 6 5 4 3 2 1 0 waga znak 64 32 16 8 4 2 1 reprezentacja uzupełnienia do dwóch (U2), w której wartość najbardziej znaczacego bitu określa znak liczby (-128). bit 7 6 5 4 3 2 1 0 waga 128 64 32 16 8 4 2 1 We obydwu kodach znak przechowuje się w najstarszym bicie słowa maszynowego. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 2 / 42
Reprezentacja znak - moduł Przykłady reprezentacji znak - moduł: Liczba(10) Kod ZM Liczba(10) Kod ZM +0 00000000 0 10000000 1 00000001 1 10000001 2 00000010 2 10000010 3 00000011 3 10000011 4 00000100 4 10000100 5 00000101 5 10000101 6 00000110 6 10000110 7 00000111 7 10000111 8 00001000 8 10001000 9 00001001 9 10001001 10 00001010 10 10001010 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 3 / 42
Reprezentacja znak - moduł Reprezentacja ZNAK-MODUŁ - uwagi: Występuja dwie reprezentacje liczby 0 Zakres liczb L w formacie ZM: 2 n 1 + 1 L 2 n 1 1 Zakres liczb 8-bitowych w kodzie ZM: 127,..., +127. 11111111 (ZM) = 2 7 + 1 = 127 (minimalna) 01111111 (ZM) = 2 7 1 = 127 (maksymalna) Zakres liczb 16-bitowych: 32767,..., +32767 11111111 11111111 (ZM) = 2 15 + 1 = 32767 (minimalna) 01111111 11111111 (ZM) = 2 15 1 = 32767 (maksymalna) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 4 / 42
Reprezentacja znak - moduł Przedstawienie liczby dziesiętnej w kodzie ZM znak liczby zakodować w najstarszym bicie słowa maszynowego moduł liczby przedstawić w kodzie BINARNYM rozszerzyć liczbę zerami z lewej strony do formatu słowa maszynowego, i.e., zadanej długości: 1B, 2B, 4B, itd. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 5 / 42
Reprezentacja znak - moduł Przedstawienie liczby dziesiętnej w kodzie ZM znak liczby zakodować w najstarszym bicie słowa maszynowego moduł liczby przedstawić w kodzie BINARNYM rozszerzyć liczbę zerami z lewej strony do formatu słowa maszynowego, i.e., zadanej długości: 1B, 2B, 4B, itd. Przykład: 117 (10) =? ZM 117 = 117 = 1110101 (2) 11110101(ZM) (w formacie 8-bitowym) 10000000 01110101(ZM) (w formacie 16-bitowym) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 5 / 42
Reprezentacja uzupełnienia do dwóch bit 7 6 5 4 3 2 1 0 waga 128 64 32 16 8 4 2 1 Najstarszy bit jest bitem znaku: 0 - liczba dodatnia, 1 - liczba ujemna. Obliczenie liczby dokonuje się poprzez zsumowanie poszczególnych wag liczby. W kodzie U2 liczby dodatnie zapisywane sa tak samo jak w zwykłym kodzie binarnym, ale najbardziej znaczacy bit traktowany jest jako bit znaku. Liczby ujemne otrzymywane sa poprzez bitowa negację danej liczby oraz dodania do zanegowanej liczby jedynki. Nie ma podwójnej reprezentacji zera, ale przedział jest niesymetryczny. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 6 / 42
Reprezentacja uzupełnienia do dwóch bit 7 6 5 4 3 2 1 0 waga 128 64 32 16 8 4 2 1 Zakres liczb w formacie U2: 2 n 1 L 2 n 1 1 Nie istnieje liczba przeciwna do najmniejszej 2 n 1. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 7 / 42
Reprezentacja uzupełnienia do dwóch bit 7 6 5 4 3 2 1 0 waga 128 64 32 16 8 4 2 1 Zakres liczb w formacie U2: 2 n 1 L 2 n 1 1 Nie istnieje liczba przeciwna do najmniejszej 2 n 1. Zakres liczb 8-bitowych: < 128; 127 >: 10000000 (U2) = 2 7 = 128 (minimalna) 01111111 (U2) = 2 7 1 = 127 (maksymalna) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 7 / 42
Reprezentacja uzupełnienia do dwóch bit 7 6 5 4 3 2 1 0 waga 128 64 32 16 8 4 2 1 Zakres liczb w formacie U2: 2 n 1 L 2 n 1 1 Nie istnieje liczba przeciwna do najmniejszej 2 n 1. Zakres liczb 8-bitowych: < 128; 127 >: 10000000 (U2) = 2 7 = 128 (minimalna) 01111111 (U2) = 2 7 1 = 127 (maksymalna) Zakres liczb 16-bitowych: < 32768; 32767 >: 1000000000000000 (U2) = 2 15 = 32768 (minimalna) 0111111111111111 (U2) = 2 15 1 = 32767 (maksymalna) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 7 / 42
Reprezentacja uzupełnienia do dwóch - przykłady bit 7 6 5 4 3 2 1 0 waga 128 64 32 16 8 4 2 1 Liczba(10) Kod U2 Liczba(10) Kod U2 0 00000000 1 00000001 1 11111111 2 00000010 2 11111110 3 00000011 3 11111101 4 00000100 4 11111100 5 00000101 5 11111011 6 00000110 6 11111010 7 00000111 7 11111001 8 00001000 8 11111000 9 00001001 9 11110111 10 00001010 10 11110110 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 8 / 42
Zmiana długości słowa Jeśli chcemy liczbę n-bitowa reprezentować na m-bitach, gdzie m > n, to: w reprezentacji znak - moduł: należy przesunać bit znaku do najdalszej lewej pozycji oraz wypełnić pozostałe wolne pozycje zerami. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 9 / 42
Zmiana długości słowa Jeśli chcemy liczbę n-bitowa reprezentować na m-bitach, gdzie m > n, to: w reprezentacji znak - moduł: należy przesunać bit znaku do najdalszej lewej pozycji oraz wypełnić pozostałe wolne pozycje zerami. w reprezentacji uzupełnień do dwóch należy przesunać bit znaku do najdalszej lewej pozycji, a powstałe puste pozycje wypełnić kopiami bitu znaku. (Dla liczb dodatnich zerami, a dla ujemnych jedynkami.) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 9 / 42
Zmiana długości słowa - przykłady znak - moduł: liczba reprezentacja znak modu liczba bitw 54 00110110 8 54 00000000 00110110 16 54 10110110 8 54 10000000 00110110 16 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 10 / 42
Zmiana długości słowa - przykłady znak - moduł: liczba reprezentacja znak modu liczba bitw 54 00110110 8 54 00000000 00110110 16 54 10110110 8 54 10000000 00110110 16 uzupełnienie do dwóch: liczba reprezentacja U2 liczba bitw 18 11101110 8 18 11111111 11101110 16 128 10000000 8 128 11111111 10000000 16 16 00010000 8 16 00000000 00010000 16 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 10 / 42
Od 8-bitowego kodu ZM do 8-bitowego kodu U2 W przypadku liczb całkowitych dodatnich kod ZM jest również kodem U2 tej liczby, np. 97 (10) = 01100001 (ZM) = 01100001 (U2) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 11 / 42
Od 8-bitowego kodu ZM do 8-bitowego kodu U2 W przypadku liczb całkowitych dodatnich kod ZM jest również kodem U2 tej liczby, np. 97 (10) = 01100001 (ZM) = 01100001 (U2) W przypadku liczb całkowitych ujemnych, aby otrzymać kod U2 należy: Bit znaku zamienić na zero. Wykonać negację bitowa otrzymanego kodu. Dodać jedynkę. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 11 / 42
Od 8-bitowego kodu ZM do 8-bitowego kodu U2 W przypadku liczb całkowitych dodatnich kod ZM jest również kodem U2 tej liczby, np. 97 (10) = 01100001 (ZM) = 01100001 (U2) W przypadku liczb całkowitych ujemnych, aby otrzymać kod U2 należy: Bit znaku zamienić na zero. Wykonać negację bitowa otrzymanego kodu. Dodać jedynkę. Przykład: 97 (10) = 11100001 (ZM) Bit znaku zamieniamy na 0: 01100001 Wykonujemy negację: 10011110 Dodajemy 1: 10011111 97 (10) = 11100001 (ZM) = 10011111 (U2) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 11 / 42
Arytmetyka liczb całkowitych w systemie U2 Negowanie: należy zanegować wszystkie bity liczby negowanej (negacja bitowa) i do otrzymanego wyniku dodać 1. Przykład: 1 0 1 1 0 1 0 0 = 76 (10) 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 + 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 = 76 (10) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 12 / 42
Dodawanie liczb w systemie U2 Dodawanie liczb w systemie U2 odbywa się standardowa metoda (bit po bicie). W operacji dodawania bierze udział bit znaku. Przeniesienie ze starszego bitu znakowego jest IGNOROWANE. Dodawanie liczb w systemie U2 daje poprawny wynik wtedy, gdy mieści się on w zakresie liczb dla danego formatu. Jeśli znaki obu składników sa jednakowe, a znak sumy jest przeciwny, to suma wykracza poza zakres reprezentowalności dla danego formatu, czyli powstaje przepełnienie (overflow). Przepełnienie jest sygnalizowane ustawieniem specjalnego znacznika w rejestrze znaczników procesora (OF=1); OF = Overflow Flag = przepełnienie. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 13 / 42
Dodawanie liczb w systemie U2 Wskaźnik przepełnienia: c z c l = 1 c z - przeniesienie z pozycji znakowej c l - przeniesienie do pozycji znakowej Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 14 / 42
Dodawanie liczb w systemie U2 - przykłady c z = 0, c l = 1 1 0 1 0 0 0 0 0 0 = 64 (10) + 0 1 0 0 0 0 0 0 = 64 (10) + 1 0 0 0 0 0 0 0 przepelnienie c z c l = 1 = Przepełnienie Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 15 / 42
Dodawanie liczb w systemie U2 - przykłady 1 1 1 1 1 1 0 0 1 0 1 1 = 53 (10) + 0 1 0 0 0 0 0 1 = 65 (10) 1 0 0 0 0 1 1 0 0 = 12 (10) c z = 1, c l = 1 c z c l = 0 = Brak przepełnienia, przeniesiony bit z pozycji znakowej jest ignorowany. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 16 / 42
Dodawanie liczb w systemie U2 - przykłady 1 1 1 1 1 0 0 1 0 1 1 = 53 (10) + 1 0 0 0 0 0 0 1 = 127 (10) 1 0 1 0 0 1 1 0 0 przepelnienie c z = 1, c l = 0 c z c l = 1 = Przepełnienie Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 17 / 42
Dodawanie liczb w systemie U2 - przykłady 1 1 1 1 0 0 1 1 1 1 0 0 = 60 (10) + 1 0 1 1 0 1 1 0 = 74 (10) 1 1 1 1 0 0 1 0 = 14 (10) c z = 0, c l = 0 c z c l = 0 = Brak przepełnienia. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 18 / 42
Odejmowanie liczb w systemie U2 Odejmowanie to dodawanie liczby przeciwnej. Przykład: 2-7 = 2+(-7)=-5 2 (10) = 00000010 7 (10) = 00000111 7 (10) = 11111000 + 00000001 = 11111001 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 19 / 42
Odejmowanie liczb w systemie U2 Odejmowanie to dodawanie liczby przeciwnej. Przykład: 2-7 = 2+(-7)=-5 2 (10) = 00000010 7 (10) = 00000111 7 (10) = 11111000 + 00000001 = 11111001 0 0 0 0 0 0 1 0 = 2 (10) + 1 1 1 1 1 0 0 1 = 7 (10) + 1 1 1 1 1 0 1 1 = 5 (10) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 19 / 42
Mnożenie liczb całkowitych w systemie U2 - przykłady 10 (10) 2 = 11110110 2 1 = 11101100 = 20 (10) 10 (10) 2 1 = 11110110 2 1 = 11111011 = 5 (10) 10 (10) 2 2 = 11110110 2 1 = 11011000 = 40 (10) 10 (10) 2 2 = 11110110 2 2 = 11111101.10 = 2.5 (10) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 20 / 42
Mnożenie liczb całkowitych w systemie ZM - przykłady 10 (10) 2 = 1 01010 2 1 = 1 010100 = 20 (10) 10 (10) 2 1 = 1 01010 2 1 = 1 00101.0 = 5 (10) 10 (10) 2 2 = 1 01010 2 1 = 1 0101000 = 40 (10) 10 (10) 2 2 = 1 01010 2 2 = 1 00010.10 = 2.5 (10) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 21 / 42
Metody mnożenia liczb w systemie binarnym 1. Metoda mnożenia bezpośredniego. Jest stosowana do liczb zapisanych w kodzie ZM (znak moduł). Mnożenie w tej metodzie przebiega tak, jak mnożenie pisemne liczb dziesiętnych. Zatem jest ono zastapione wielokrotnym dodawaniem odpowiednio przesuniętej mnożnej. 2. Metoda Robertsona. 3. Algorytm powielonego znaku 4. Dwa warianty metody Bootha - dotyczy mnożenia ułamków w reprezentacji U2. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 22 / 42
Metoda mnożenia bezpośredniego - przykład 1 0 1 0 0 0 1 = 17 (10) 0 0 0 1 0 1 = 5 (10) 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 + 0 0 0 0 0 0 0 1 0 1 0 1 0 1 = 85 (10) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 23 / 42
Metoda mnożenia bezpośredniego - przykład 2 0 1 1 0 1 = 13 (10) 0 0 0 1 1 = 3 (10) 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 = 39 (10) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 24 / 42
Metoda Robertsona Stosowana jest dla liczb w systemie U2 Dla obu czynników dodatnich wykonujemy METODE MNOŻENIA BEZPOŚREDNIEGO. Dla obu czynników ujemnych wykonujemy następujac a prcedurę:. Bit znaku mnożnika ustawiamy na 0 Wykonujemy możenie METODA MNOŻENIA BEZPOŚREDNIEGO Otrzymany iloczyn korygujemy, odejmujac poprawkę. Dla mnożnej dotatniej i ujemnego mnożnika wykonujemy procedure jak dla obu czynników ujemnych; Dla sytuacji odwrotnej zamieniamy argumenty! Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 25 / 42
Metoda Robertsona - przykład 1 ( 5) (10) ( 3) (10) =? ( 5) (10) = 1011 (U2) ( 3) (10) = 1101 (U2) 0101 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 + 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 1 0 0 1 1 1 PSEUDOILOCZYN Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 26 / 42
Metoda Robertsona - przykład 1 Poprawka korekcyjna dla przypadku ujemnego mnożnika, wynosi tyle, co dopełnienie dwójkowe mnożnej przesuniętej w lewo o n 1 bitów A = 1011 A = A 2 3 = 1011000 A = 0100111 + 1 = 0101000 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 27 / 42
Metoda Robertsona - przykład 1 Poprawka korekcyjna dla przypadku ujemnego mnożnika, wynosi tyle, co dopełnienie dwójkowe mnożnej przesuniętej w lewo o n 1 bitów A = 1011 A = A 2 3 = 1011000 A = 0100111 + 1 = 0101000 1 1 0 0 1 1 1 PSEUDOILOCZYN + 0 1 0 1 0 0 0 POPRAWKA 0 0 0 1 1 1 1 = 15 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 27 / 42
Metoda Robertsona - przykład 2 (3) (10) ( 13) (10) =? (3) (10) = 00011 (U2) ( 13) (10) = 10011 (U2) 00011 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 PSEUDOILOCZYN Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 28 / 42
Metoda Robertsona - przykład 2 Poprawka korekcyjna dla przypadku ujemnego mnożnika, wynosi tyle, co dopełnienie dwójkowe mnożnej przesuniętej w lewo o n 1 bitów A = 00011 A = A 2 4 = 00110000 A = 11001111 + 1 = 11010000 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 29 / 42
Metoda Robertsona - przykład 2 Poprawka korekcyjna dla przypadku ujemnego mnożnika, wynosi tyle, co dopełnienie dwójkowe mnożnej przesuniętej w lewo o n 1 bitów A = 00011 A = A 2 4 = 00110000 A = 11001111 + 1 = 11010000 0 0 0 0 1 0 0 1 PSEUDOILOCZYN + 1 1 0 1 0 0 0 0 POPRAWKA 1 1 0 1 1 0 0 1 = 39 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 29 / 42
Algorytm powielonego znaku Dwukrotnie zwiększyć każda z liczb, powielajac bit znaku na wszystkie dodatkowe pozycje Po wykonaniu rozszerzenia znakowego liczby sa mnożone jak w kodzie BINARNYM Wynik powinien być liczba o długości równej sumie długości mnożonych liczb - bity wykraczajace poza tę długość sa ignorowane. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 30 / 42
Algorytm powielonego znaku - przykład 1 1 1 1 1 0 1 1 5 0 0 0 0 0 1 1 1 7 1 1 1 1 1 0 1 1 + 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 0 1 35 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 31 / 42
Mnożenie I metoda BOOTH A wariant I Porównywanie par bitów mnożnika (w U2). Badamy poczawszy od ostatniej pary bitów (cyfr) mnożnika. 1. Jeżeli badana para jest kombinacja 1 0, to od iloczynu częściowego odejmujemy mnożna A i przesuwamy wynik o jedno miejsce w prawo. 2. Jeżeli badana para jest odpowiednio para 0 1, to dodajemy mnożna do iloczynu częściowego i przesuwamy cały wynik o jedno miejsce w prawo. 3. Jeżeli badana para jest para o jednakowych cyfrach 0 0 lub 1 1, to wykonujemy tylko przesunięcie w prawo. 4. Jeżeli w skład pary wchodzi bit znakowy (znak), to nie wykonujemy przesunięcia. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 32 / 42
Mnożenie I metoda BOOTH A - przykład 1 Rozważmy dwie liczby: A = 7 32 = 0.00111 (ZM) = 0.00111 (U2) Aby obliczyć B = 1 32 = 1.00001 (ZM) = 1.11111 (U2) A B do liczby B na najmniej znaczacej pozycji dopisujemy 0, stad:. B = 1.111110 (U2) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 33 / 42
Mnożenie I metoda BOOTH A - przykład 1 Badamy kolejne bity mnożnika (czyli kolejne bity liczby B): Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 34 / 42
Mnożenie I metoda BOOTH A - przykład 1 Badamy kolejne bity mnożnika (czyli kolejne bity liczby B): 1. para 1-0 (1.111110 (U2) ) - od iloczynu częściowego odejmujemy mnożna (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 34 / 42
Mnożenie I metoda BOOTH A - przykład 1 Badamy kolejne bity mnożnika (czyli kolejne bity liczby B): 1. para 1-0 (1.111110 (U2) ) - od iloczynu częściowego odejmujemy mnożna (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, 2. para 1-1 (1.111110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 34 / 42
Mnożenie I metoda BOOTH A - przykład 1 Badamy kolejne bity mnożnika (czyli kolejne bity liczby B): 1. para 1-0 (1.111110 (U2) ) - od iloczynu częściowego odejmujemy mnożna (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, 2. para 1-1 (1.111110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 3. para 1-1 (1.111110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 34 / 42
Mnożenie I metoda BOOTH A - przykład 1 Badamy kolejne bity mnożnika (czyli kolejne bity liczby B): 1. para 1-0 (1.111110 (U2) ) - od iloczynu częściowego odejmujemy mnożna (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, 2. para 1-1 (1.111110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 3. para 1-1 (1.111110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 4. para 1-1 (1.111110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 34 / 42
Mnożenie I metoda BOOTH A - przykład 1 Badamy kolejne bity mnożnika (czyli kolejne bity liczby B): 1. para 1-0 (1.111110 (U2) ) - od iloczynu częściowego odejmujemy mnożna (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, 2. para 1-1 (1.111110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 3. para 1-1 (1.111110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 4. para 1-1 (1.111110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 5. para 1-1 (1.111110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 34 / 42
Mnożenie I metoda BOOTH A - przykład 1 Badamy kolejne bity mnożnika (czyli kolejne bity liczby B): 1. para 1-0 (1.111110 (U2) ) - od iloczynu częściowego odejmujemy mnożna (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, 2. para 1-1 (1.111110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 3. para 1-1 (1.111110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 4. para 1-1 (1.111110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 5. para 1-1 (1.111110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 6. para 1-1 (1.111110 (U2) ) - nic nie robimy, bo w skład pary wchodzi bit znaku. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 34 / 42
Mnożenie I metoda BOOTH A - przykład 1 1. 0. 0 0 0 0 0 0. 0 0 1 1 1 1. 1 1 0 0 1 1. 1 1 1 0 0 1 2. 1. 1 1 1 1 0 0 1 3. 1. 1 1 1 1 1 0 0 1 4. 1. 1 1 1 1 1 1 0 0 1 5. 1. 1 1 1 1 1 1 1 0 0 1 6. 1. 1 1 1 1 1 1 1 0 0 1 0.00111 (U2) 1.11111 (U2) = 1.1111111001 (U2) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 35 / 42
Mnożenie I metoda BOOTH A - przykład 2 Rozważmy dwie liczby: A = 7 32 = 1.00111 (ZM) = 1.11001 (U2) Aby obliczyć B = 3 32 = 0.00011 (ZM) = 0.00011 (U2) A B do liczby B na najmniej znaczacej pozycji dopisujemy 0, stad:. B = 0.000110 (U2) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 36 / 42
Mnożenie I metoda BOOTH A - przykład 2 Badamy kolejne bity mnożnika (czyli kolejne bity liczby B): Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 37 / 42
Mnożenie I metoda BOOTH A - przykład 2 Badamy kolejne bity mnożnika (czyli kolejne bity liczby B): 1. para 1-0 (0.000110 (U2) ) - od iloczynu częściowego odejmujemy mnożna (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 37 / 42
Mnożenie I metoda BOOTH A - przykład 2 Badamy kolejne bity mnożnika (czyli kolejne bity liczby B): 1. para 1-0 (0.000110 (U2) ) - od iloczynu częściowego odejmujemy mnożna (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, 2. para 1-1 (0.000110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 37 / 42
Mnożenie I metoda BOOTH A - przykład 2 Badamy kolejne bity mnożnika (czyli kolejne bity liczby B): 1. para 1-0 (0.000110 (U2) ) - od iloczynu częściowego odejmujemy mnożna (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, 2. para 1-1 (0.000110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 3. para 0-1 (0.000110 (U2) ) - dodajemy mnożna do iloczynu częściowego i przesuwamy cały wynik o jedno miejsce w prawo, Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 37 / 42
Mnożenie I metoda BOOTH A - przykład 2 Badamy kolejne bity mnożnika (czyli kolejne bity liczby B): 1. para 1-0 (0.000110 (U2) ) - od iloczynu częściowego odejmujemy mnożna (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, 2. para 1-1 (0.000110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 3. para 0-1 (0.000110 (U2) ) - dodajemy mnożna do iloczynu częściowego i przesuwamy cały wynik o jedno miejsce w prawo, 4. para 0-0 (0.000110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 37 / 42
Mnożenie I metoda BOOTH A - przykład 2 Badamy kolejne bity mnożnika (czyli kolejne bity liczby B): 1. para 1-0 (0.000110 (U2) ) - od iloczynu częściowego odejmujemy mnożna (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, 2. para 1-1 (0.000110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 3. para 0-1 (0.000110 (U2) ) - dodajemy mnożna do iloczynu częściowego i przesuwamy cały wynik o jedno miejsce w prawo, 4. para 0-0 (0.000110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 5. para 0-0 (0.000110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 37 / 42
Mnożenie I metoda BOOTH A - przykład 2 Badamy kolejne bity mnożnika (czyli kolejne bity liczby B): 1. para 1-0 (0.000110 (U2) ) - od iloczynu częściowego odejmujemy mnożna (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, 2. para 1-1 (0.000110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 3. para 0-1 (0.000110 (U2) ) - dodajemy mnożna do iloczynu częściowego i przesuwamy cały wynik o jedno miejsce w prawo, 4. para 0-0 (0.000110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 5. para 0-0 (0.000110 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 6. para 0-0 (0.000110 (U2) ) - nic nie robimy, bo w skład pary wchodzi bit znaku. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 37 / 42
Mnożenie I metoda BOOTH A - przykład 2 1. 0. 0 0 0 0 0 1. 1 1 0 0 1 0. 0 0 1 1 1 0. 0 0 0 1 1 1 2. 0. 0 0 0 0 1 1 1 3. + 1. 1 1 0 0 1 1. 1 1 0 1 0 1 1 1. 1 1 1 0 1 0 1 1 4. 1. 1 1 1 1 0 1 0 1 1 5. 1. 1 1 1 1 1 0 1 0 1 1 6. 1. 1 1 1 1 1 0 1 0 1 1 1.11001 (U2) 0.00011 (U2) = 1.1111101011 (U2) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 38 / 42
Mnożenie metoda BOOTH A - II wariant 1. Przesuwamy mnożna o jedno miejsce w prawo (uzyskujemy A 2 - A - pół ). 2. Badamy ostatni bit mnożnika, jeżeli jest on równy 1, to dodajemy mnożna do iloczynu częściowego, który jest równy zeru na poczatku mnożenia, jeżeli ostatni bit mnożnika jest równy 0, to nie wykonujemy żadnego działania. 3. Przesuwamy iloczyn częściowy o jedno miejsce w prawo. 4. Przechodzimy do badania kolejnego bitu mnożnika. Jeżeli badany bit jest bitem znaku, to wtedy gdy jego wartość wynosi 1, to odejmujemy mnożna od iloczynu częściowego, zaś gdy jest on równy 0 nie wykonujemy żadnego działania. 5. Uzyskany iloczyn częściowy przesuwamy o jedno miejsce w lewo (powrót do A), wynik jest w postaci U2. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 39 / 42
Mnożenie II metoda BOOTH A - przykład Rozważmy dwie liczby: A = 27 32 = 0.11011 (ZM) = 0.11011 (U2) Aby obliczyć B = 21 32 = 1.10101 (ZM) = 1.01011 (U2) A B przesuwamy mnożna o jedno miejsce w prawo - uzyskanie wartości A - pół :. A = 0.011011 (U2) Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 40 / 42
Mnożenie II metoda BOOTH A - przykład 1. bit 1 (1.01011 (U2) ) - do iloczynu częściowego dodajemy mnożna A-pół (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 41 / 42
Mnożenie II metoda BOOTH A - przykład 1. bit 1 (1.01011 (U2) ) - do iloczynu częściowego dodajemy mnożna A-pół (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, 2. bit 1 (1.01011 (U2) ) - do iloczynu częściowego dodajemy mnożna A-pół, następnie przesuwamy wynik o jedno miejsce w prawo, Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 41 / 42
Mnożenie II metoda BOOTH A - przykład 1. bit 1 (1.01011 (U2) ) - do iloczynu częściowego dodajemy mnożna A-pół (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, 2. bit 1 (1.01011 (U2) ) - do iloczynu częściowego dodajemy mnożna A-pół, następnie przesuwamy wynik o jedno miejsce w prawo, 3. bit 0 (1.01011 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 41 / 42
Mnożenie II metoda BOOTH A - przykład 1. bit 1 (1.01011 (U2) ) - do iloczynu częściowego dodajemy mnożna A-pół (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, 2. bit 1 (1.01011 (U2) ) - do iloczynu częściowego dodajemy mnożna A-pół, następnie przesuwamy wynik o jedno miejsce w prawo, 3. bit 0 (1.01011 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 4. bit 1 (1.01011 (U2) ) - do iloczynu częściowego dodajemy mnożna A-pół, następnie przesuwamy wynik o jedno miejsce w prawo, Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 41 / 42
Mnożenie II metoda BOOTH A - przykład 1. bit 1 (1.01011 (U2) ) - do iloczynu częściowego dodajemy mnożna A-pół (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, 2. bit 1 (1.01011 (U2) ) - do iloczynu częściowego dodajemy mnożna A-pół, następnie przesuwamy wynik o jedno miejsce w prawo, 3. bit 0 (1.01011 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 4. bit 1 (1.01011 (U2) ) - do iloczynu częściowego dodajemy mnożna A-pół, następnie przesuwamy wynik o jedno miejsce w prawo, 5. bit 0 (1.01011 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 41 / 42
Mnożenie II metoda BOOTH A - przykład 1. bit 1 (1.01011 (U2) ) - do iloczynu częściowego dodajemy mnożna A-pół (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, 2. bit 1 (1.01011 (U2) ) - do iloczynu częściowego dodajemy mnożna A-pół, następnie przesuwamy wynik o jedno miejsce w prawo, 3. bit 0 (1.01011 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 4. bit 1 (1.01011 (U2) ) - do iloczynu częściowego dodajemy mnożna A-pół, następnie przesuwamy wynik o jedno miejsce w prawo, 5. bit 0 (1.01011 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 6. bit znaku 1 (1.01011 (U2) ) - robimy tzw. poprawkę - odejmujemy mnożna od iloczynu częściowego, Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 41 / 42
Mnożenie II metoda BOOTH A - przykład 1. bit 1 (1.01011 (U2) ) - do iloczynu częściowego dodajemy mnożna A-pół (iloczyn częściowy wynosi na poczatku 0), następnie przesuwamy wynik o jedno miejsce w prawo, 2. bit 1 (1.01011 (U2) ) - do iloczynu częściowego dodajemy mnożna A-pół, następnie przesuwamy wynik o jedno miejsce w prawo, 3. bit 0 (1.01011 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 4. bit 1 (1.01011 (U2) ) - do iloczynu częściowego dodajemy mnożna A-pół, następnie przesuwamy wynik o jedno miejsce w prawo, 5. bit 0 (1.01011 (U2) ) - przesuwamy iloczyn częściowy o jedno miejsce w prawo, 6. bit znaku 1 (1.01011 (U2) ) - robimy tzw. poprawkę - odejmujemy mnożna od iloczynu częściowego, 7. otrzymany wynik przesuwamy o jedno miejsce w lewo. Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 41 / 42
Mnożenie II metoda BOOTH A - przykład 1. 0. 0 0 0 0 0 0 + 0. 0 1 1 0 1 1 0. 0 1 1 0 1 1 0. 0 0 1 1 0 1 1 2. + 0. 0 1 1 0 1 1 0. 1 0 1 0 0 0 1 0. 0 1 0 1 0 0 0 1 3. 0. 0 0 1 0 1 0 0 0 1 4. + 0. 0 1 1 0 1 1 0. 1 0 0 1 0 1 0 0 1 0. 0 1 0 0 1 0 1 0 0 1 5. 0. 0 0 1 0 0 1 0 1 0 0 1 6. 0. 0 1 1 0 1 1 1. 1 0 1 1 1 0 0 1 0 0 1 7. 1. 0 1 1 1 0 0 1 0 0 1 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 42 / 42