MNOŻENIE W SYSTEMACH UZUPEŁNIENIOWYCH PEŁNYCH (algorytm uniwersalny)

Podobne dokumenty
Podstawy Informatyki

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

B.B. 2. Sumowanie rozpoczynamy od ostatniej kolumny. Sumujemy cyfry w kolumnie zgodnie z podaną tabelką zapisując wynik pod kreską:

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

LISTA 1 ZADANIE 1 a) 41 x =5 podnosimy obustronnie do kwadratu i otrzymujemy: 41 x =5 x 5 x przechodzimy na system dziesiętny: 4x 1 1=25 4x =24

Arytmetyka. Arytmetyka. Magdalena Lemańska. Magdalena Lemańska,

Wstęp do informatyki- wykład 1 Systemy liczbowe

DZIAŁANIA NA UŁAMKACH DZIESIĘTNYCH.

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

Pozycyjny system liczbowy

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Kod U2 Opracował: Andrzej Nowak

Zapis liczb binarnych ze znakiem

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

Operacje arytmetyczne

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Arytmetyka liczb binarnych

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

LICZBY ZMIENNOPRZECINKOWE

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

1.1. Pozycyjne systemy liczbowe

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

SYSTEMY LICZBOWE 275,538 =

Wstęp do programowania. Reprezentacje liczb. Liczby naturalne, całkowite i rzeczywiste w układzie binarnym

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

1. Operacje logiczne A B A OR B

Wstęp do informatyki- wykład 2

Systemy zapisu liczb.

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,

Luty 2001 Algorytmy (7) 2000/2001

Cyfrowy zapis informacji

Arytmetyka stałopozycyjna

Pracownia Komputerowa wykład V

Arytmetyka binarna - wykład 6

Operacje arytmetyczne w systemie dwójkowym

System liczbowy jest zbiorem reguł określających jednolity sposób zapisu i nazewnictwa liczb.

Wielkości liczbowe. Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

Wielkości liczbowe. Wykład z Podstaw Informatyki. Piotr Mika

Podstawy Informatyki

DYDAKTYKA ZAGADNIENIA CYFROWE ZAGADNIENIA CYFROWE

Liczby rzeczywiste są reprezentowane w komputerze przez liczby zmiennopozycyjne. Liczbę k można przedstawid w postaci:

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

...o. 2. ZARYS ORGANIZACJI MASZYNY TYPOWEJ

ARCHITEKTURA KOMPUTERÓW Liczby zmiennoprzecinkowe

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

LICZBY ZMIENNOPRZECINKOWE

MADE IN CHINA czyli SYSTEM RESZTOWY

3. Macierze i Układy Równań Liniowych

Informatyka kodowanie liczb. dr hab. inż. Mikołaj Morzy

Wprowadzenie do informatyki - ć wiczenia

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

Wstęp do informatyki- wykład 1

Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

Pracownia Komputerowa wyk ad V

Techniki multimedialne

Podstawy Informatyki Maszyna Turinga

Wstęp do informatyki- wykład 1 Systemy liczbowe

1259 (10) = 1 * * * * 100 = 1 * * * *1

RODZAJE INFORMACJI. Informacje analogowe. Informacje cyfrowe. U(t) U(t) Umax. Umax. R=(0,Umax) nieskończony zbiór możliwych wartości. Umax.

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Kodowanie liczb całkowitych w systemach komputerowych

1. Liczby wymierne. x dla x 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba)

Architektura systemów komputerowych. Arytmetyka maszyn cyfrowych

Dodawanie liczb binarnych

Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia:

Pracownia Komputerowa wykład VI

Technologie Informacyjne

Kod IEEE754. IEEE754 (1985) - norma dotycząca zapisu binarnego liczb zmiennopozycyjnych (pojedynczej precyzji) Liczbę binarną o postaci

; B = Wykonaj poniższe obliczenia: Mnożenia, transpozycje etc wykonuję programem i przepisuję wyniki. Mam nadzieję, że umiesz mnożyć macierze...

ARCHITEKTURA KOMPUTERÓW Systemy liczbowe

Stan wysoki (H) i stan niski (L)

Naturalny kod binarny (NKB)

Metoda eliminacji Gaussa

Odwrócimy macierz o wymiarach 4x4, znajdującą się po lewej stronie kreski:

Architektura komputerów

Wykład 2. Informatyka Stosowana. 9 października Informatyka Stosowana Wykład 2 9 października / 42

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 2 WSTĘP DO INFORMATYKI

Szybkie układy mnożące

L6.1 Systemy liczenia stosowane w informatyce

LICZENIE NA LICZYDLE

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Wykład 2. Informatyka Stosowana. 10 października Informatyka Stosowana Wykład 2 10 października / 42

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Szybkie układy mnożące

Przykładowe rozwiązania zadań

9 10 = U1. Przykład dla liczby dziesiętnej ( 9): negacja 1001= =10110 U1. Podsumowując: w zapisie dziesiętnym

Wstęp do Informatyki

Wstęp do informatyki. Pojęcie liczebności. Zapis liczb. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Pracownia Komputerowa wykład IV

Zbiór liczb rzeczywistych, to zbiór wszystkich liczb - wymiernych i niewymiernych. Zbiór liczb rzeczywistych oznaczamy symbolem R.

Reprezentacja stałoprzecinkowa. Reprezentacja zmiennoprzecinkowa zapis zmiennoprzecinkowy liczby rzeczywistej

Pracownia Komputerowa wyk ad VI

UKŁADY RÓWNAŃ LINIOWYCH

Wstęp do informatyki. Pojęcie liczebności. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

Znaki w tym systemie odpowiadają następującym liczbom: I=1, V=5, X=10, L=50, C=100, D=500, M=1000

WYRAŻENIA ALGEBRAICZNE

Transkrypt:

MNOŻENIE W SYSTEMACH UZUPEŁNIENIOWYCH PEŁNYCH (algorytm uniwersalny) SPOSÓB 1 (z rozszerzeniem mnożnika): Algorytm jak zwykle jest prosty: lewostronne rozszerzenie mnożnej o kilka cyfr (na pewno wystarczy gdy rozszerzymy o ilość cyfr mnożnika), lewostronne rozszerzenie mnożnika o jedną cyfrę, wykonywanie normalnego mnożenia (jakby to był system naturalny ale z uwzględnieniem nieskończonego rozszerzenia największą bądź najmniejszą cyfrą w danym systemie) na wszystkich cyfrach mnożnika poza cyfrą rozszerzenia, jeśli cyfrą rozszerzenia jest -1 (największa cyfra w danym systemie) to powinniśmy dodać również uzupełnienie MNOŻNEJ przesunięte o ilość cyfr mnożnika (nie licząc cyfry rozszerzenia), jeśli jest 0, nic więcej nie robimy PRZYKŁAD 1.1: 0 3 2 5 5 uzupełnienie mnożnej 9 9 9 9 6 7 4 5 U10 mnożna 9 8 1 2 3 U10 mnożnik 9 9 9 9 9 9 0 2 3 5 9 9 9 9 9 3 4 9 0 9 9 9 9 6 7 4 5 9 9 7 3 9 6 0 0 0 3 2 5 5 dodajemy uzupełnienie 0 0 0 6 1 0 9 6 3 5 U10 6745 U10 8123 U10 = 06109635 U10 PRZYKŁAD 1.2: 7 7 7 7 7 7 4 5 0 0 7 2 3 7 7 7 7 7 7 7 6 5 7 7 7 7 7 7 7 7 1 2 7 7 7 7 7 5 0 3 7 7 7 7 7 4 7 2 7 7 7745 U8 0723 U8 = 747277 U8 PRZYKŁAD 1.2: 7 4 6 2 2 0 0 0 0 3 1 5 6 7 6 4 2 3 0 0 0 0 0 1 1 5 1 2 0 0 0 0 0 6 3 3 4 0 0 0 1 4 6 7 0 0 0 2 3 2 2 4 7 7 4 6 2 2 7 7 7 3 2 3 0 0 5 2 3156 U8 6423 U8 = 73230052 U8 1

SPOSÓB 2 (bez rozszerzania mnożnika): Algorytm jak zwykle jest prosty: lewostronne rozszerzenie mnożnej o kilka cyfr (na pewno wystarczy gdy rozszerzymy o ilość cyfr mnożnika), wykonywanie normalnego mnożenia (jakby to był system naturalny ale z uwzględnieniem nieskończonego rozszerzenia największą bądź najmniejszą cyfrą w danym systemie) na wszystkich cyfrach poza ostatnią, dodajemy mnożną pomnożoną przez wartość (wartość może być ujemna bądź dodatnia, np w U10 wartość cyfry 7 to -3) ostatniej (najstarszej) cyfry mnożnika, przesunięte o jeden mniej niż ilość cyfr mnożnika PRZYKŁAD 2.1: 0 3 2 5 5 uzupełnienie mnożnej 9 9 9 9 6 7 4 5 U10 mnożna 8 1 2 3 U10 mnożnik 9 9 9 9 9 9 0 2 3 5 9 9 9 9 9 3 4 9 0 9 9 9 9 6 7 4 5 0 0 0 6 5 1 0 8 U10=-2 10 więc dodajemy -2*mnożną czyli 2*uzupełnienie mnożnej 0 0 0 6 1 0 9 6 3 5 U10 6745 U10 8123 U10 = 06109635 U10 PRZYKŁAD 2.2 (tu nic się nie zmienia!): 7 7 7 7 7 7 4 5 0 7 2 3 7 7 7 7 7 7 7 6 5 7 7 7 7 7 7 7 7 1 2 7 7 7 7 7 5 0 3 7 7 7 7 7 4 7 2 7 7 7745 U8 0723 U8 = 747277 U8 PRZYKŁAD 2.3 (6 U8= -(8-6)= -2): 7 4 6 2 2 0 0 0 0 3 1 5 6 6 4 2 3 0 0 0 0 0 1 1 5 1 2 0 0 0 0 0 6 3 3 4 0 0 0 1 4 6 7 0 7 7 7 1 4 4 4 7 7 7 3 2 3 0 0 5 2 3156 U8 6423 U8 = 73230052 U8 2

MNOŻENIE W SYSTEMIE U2 1101011 U2 1000110 U2 = 1 010101 2 1 0111010 2 =21 10 58 10 =1218 10 =10011000010 2 =010011000010 U2 SPOSÓB 1: skanujemy mnożnik od prawej strony aż do przedostatniej cyfry i jeśli cyfrą jest zero to dodajemy 0 (czyli w zasadzie nic nie dodajemy) a jeśli cyfrą jest 1 to dodajemy mnożną, każdą kolejną liczbę zapisujemy przesuniętą o jedną pozycję w lewo w stosunku do liczby poprzedniej (jak w normalnym mnożeniu), jeśli ostatnią cyfrą mnożnika jest 1 to zamiast dodawać na tym przesunięciu mnożną, dodajemy uzupełnienie (jeśli jest 0 to nic nie dodajemy), przed dodaniem liczb zapisujemy po lewej stronie ich rozszerzenie (jedynki dla liczb z 1 na najstarszym bicie i zera dla liczb z 0 na najstarszym bicie). UWAGA: Jeśli mnożna ma mniej bitów niż mnożnik a jest liczbą ujemną (jego najstarszym bitem jest 1), należy rozszerzyć go jedynkami z lewej strony aż do długości mnożnej. Ma to znaczenie ponieważ TYLKO najstarszy bit odpowiada za dodanie uzupełnienia zamiast mnożnej. Oto przykład (rozszerzenie zapisane jest na szarym tle, podkreśloną kursywą) 0 0 1 0 1 0 1 uzupełnienie mnożnej 1 1 0 1 0 1 1 mnożna 1 0 0 0 1 1 0 mnożnik (0) 0 0 0 0 0 0 0 0 0 0 0 0 0 mnożna razy 0 czyli 0 (1) 1 1 1 1 1 1 1 0 1 0 1 1 mnożna przesunięta o 1 pozycję (1) 1 1 1 1 1 1 0 1 0 1 1 mnożna przesunięta o 2 pozycje (0) 0 0 0 0 0 0 0 0 0 0 mnożna razy 0 czyli 0, przesunięta o 3 pozycje (0) 0 0 0 0 0 0 0 0 0 mnożna razy 0 czyli 0, przesunięta o 4 pozycje (0) 0 0 0 0 0 0 0 0 mnożna razy 0 czyli 0, przesunięte o 5 pozycji (0) 0 0 1 0 1 0 1 uzupełnienie mnożnej przesunięte o 6 pozycji (0) 0 0 1 0 0 1 1 0 0 0 0 1 0 suma 3

SPOSÓB 2: Postępujemy podobnie jak w poprzednim przypadku: skanujemy mnożnik od prawej aż do przedostatniej cyfry, jeśli cyfrą jest 0 to dodajemy 0 (mające tyle cyfr co mnożna) z zanegowanym najstarszym bitem, jeśli 1 to dodajemy mnożną z zanegowanym najstarszym bitem, w mnożeniu przez ostatnią cyfrę dodajemy negację mnożnej z zanegowanym ostatnim bitem jeśli to cyfra 1, jeśli nie, to dodajemy zero z jedynka na najstarszym bicie jako ostatnią dodajemy korektę w postaci liczby składającej się z cyfry jeden na pozycji takiej jak najstarszy bit mnożnej i z cyfry 1 na pozycji o jeden dalszej niż cyfra zanegowana w po poprzednim mnożeniu, dzięki negacji pierwszych cyfr NIE UWZGLĘDNIAMY ROZSZERZENIA PRZY DODAWANIU. 0 0 1 0 1 0 1 uzupełnienie mnożnej 1 1 0 1 0 1 1 mnożna 1 0 0 0 1 1 0 mnożnik 1 0 0 0 0 0 0 mnożna razy 0 czyli 0 0 1 0 1 0 1 1 mnożna przesunięta o 1 pozycję 0 1 0 1 0 1 1 mnożna przesunięta o 2 pozycje 1 0 0 0 0 0 0 mnożna razy 0 czyli 0, przesunięta o 3 pozycje 1 0 0 0 0 0 0 mnożna razy 0 czyli 0, przesunięta o 4 pozycje 1 0 0 0 0 0 0 mnożna razy 0 czyli 0, przesunięta o 5 pozycji 1 0 1 0 1 0 1 uzupełnienie mnożnej przesunięte o 6 pozycji (1) 1 0 0 0 0 0 0 1 korekta przesunięta o ilość cyfr mnożnej-1 (0) 0 0 0 1 0 0 1 1 0 0 0 0 1 0 suma Oto przykład (zanegowane najstarsze bity zostały pogrubione): 4

SPOSÓB 3.1: Z zamianą na SD algorytmem Booth'a Algorytm mnożenia z zamianą na SD: zamieniamy MNOŻNIK z systemu U2 na SD, zapisujemy sobie uzupełnienie mnożnej, zaczynamy od prawej strony liczby SD i skanujemy kolejne cyfry, jeśli cyfrą jest zero to dodajemy 0 (lub po prostu nic nie dodajemy), jeśli -1 to dodajemy uzupełnienie mnożnej a jeśli 1 to dodajemy mnożną, każdą kolejną dodawaną liczbę zapisujemy z przesunięciem o jeden większym niż poprzednią (jak w każdym mnożeniu). Algorytm zmiany liczby U2 na SD: zaczynamy od prawej strony i obliczamy kolejne cyfry po jednej, rozszerzamy liczbę dopisując cyfrę 0 po prawej stronie, żeby otrzymać cyfrę w kodzie SD na pozycji i, odejmujemy od cyfry w U2 na pozycji i-1, cyfrę na pozycji i, jeśli nie skończyliśmy, obliczamy kolejną cyfrę, Dodawane liczby są w systemie U2 więc przed ich dodaniem rozszerzamy je po lewej stronie. Przykład: x 6 x 5 x 4 x 3 x 2 x 1 x 0 x -1 oznaczenia pozycji 1 0 0 0 1 1 0 mnożnik w U2 1 0 0 0 1 1 0 0 uzupełniamy mnożnik cyfrą 0 z prawej strony x 5-x 6 x 4-x 5 x 3-x 4 x 2-x 3 x 1-x 2 x 0-x 1 x -1-x 0 wzory na otrzymanie kolejnych cyfr 0-1 0-0 0-0 1-0 1-1 0-1 0-0 wartości podstawione do wzorów -1 0 0 1 0-1 0 mnożnik w SD 0 0 1 0 1 0 1 uzupełnienie mnożnej 1 1 0 1 0 1 1 mnożna 1 0 0 0 1 1 0 mnożnik -1 0 0 1 0-1 0 mnożnik w systemie SD (0) 0 0 0 0 0 0 0 0 0 0 0 0 0 mnożna razy 0 czyli 0 (0) 0 0 0 0 0 0 0 1 0 1 0 1 uzupełnienie mnożnej przesunięte o 1 pozycję (0) 0 0 0 0 0 0 0 0 0 0 0 mnożna razy 0 czyli 0, przesunięte o 2 pozycje (1) 1 1 1 1 1 0 1 0 1 1 mnożna przesunięta o 3 pozycje (0) 0 0 0 0 0 0 0 0 0 mnożna razy 0 czyli 0, przesunięte o 4 pozycje (0) 0 0 0 0 0 0 0 0 mnożna razy 0 czyli 0, przesunięte o 5 pozycji (0) 0 0 1 0 1 0 1 uzupełnienie mnożnej przesunięte o 6 pozycji (0) 0 0 1 0 0 1 1 0 0 0 0 1 0 suma 5

SPOSÓB 3.2: Z zamianą na SD rozszerzonym algorytmem Booth'a (inaczej algorytmem Booth'a McSorleya) Zmiana liczby U2 na SD wg algorytmu Booth'a-McSorleya: cyfry obliczamy od prawej, po dwie w każdej iteracji, dzielimy liczbę na grupy dwucyfrowe, liczbę rozszerzamy o cyfrę 0 z prawej strony (zawsze), w razie potrzeby liczbę należy rozszerzyć również lewostronnie o cyfry wynikające z jej znaku (0 dla liczb dodatnich, 1 dla ujemnych, drugą cyfrę każdej grupy mnożymy przez -2 i dodajemy dwie cyfry stojące na prawo od niej (pierwszą cyfrę grupy i drugą cyfrę poprzedniej grupy), wynik zapisujemy w formie dwucyfrowej liczby SD i algorytm powtarzamy dla kolejnych grup. Oto przykład (przekodujemy liczbę 1000110) x 7 x 6 x 5 x 4 x 3 x 2 x 1 x 0 x -1 oznaczenia pozycji 1 1 0 0 0 1 1 0 mnożnik w U2 1 1 0 0 0 1 1 0 0 uzupełniamy mnożnik cyframi rozszerzenia 1 1 0 0 0 1 1 0 0 dzielimy liczbę na grupy dwucyfrowe -2x 7 +x 6 +x 5-2x 5 +x 4 +x 3-2x 3 +x 2 +x 1-2x 1 +x 0 +x -1 wzory na otrzymanie kolejnych cyfr -2*1+1+0= -1-2*0+0+0= 0-2*0+1+1=2-2+ 0+ 0= -2 wartości podstawione do wzorów 0-1 0 0 1 0-1 0 mnożnik w SD Przekodowywanie liczb z U2 na SD wg alternatywnego algorytmu Booth'a McSorleya: Algorytm jest bardzo podobny do poprzedniego ale tym razem rozszerzamy po prawej o dwa zera i dzielimy na grupy do dwie cyfry zaczynając od pierwszego zera rozszerzenia. Dalej robimy już to samo co w poprzedniej metodzie. Najlepiej widać to po porównaniu przykładu powyższego z poniższym. UWAGA! Ta interpretacja różni się od tej prof. Biernata. On jest oczywiście autorytetem więc radzę używać jego sposobu a nie tego. x 7 x 6 x 5 x 4 x 3 x 2 x 1 x 0 x -1 x -2 oznaczenia pozycji 1 1 0 0 0 1 1 0 mnożnik w U2 1 1 0 0 0 1 1 0 0 0 uzupełniamy mnożnik cyframi rozszerzenia 1 1 0 0 0 1 1 0 0 0 dzielimy liczbę na grupy dwucyfrowe -2x 6 +x 5 +x 4-2x 4 +x 3 +x 2-2x 2 +x 1 +x 0-2x 0 +x -1 +x -2 wzory na otrzymanie kolejnych cyfr -2+0+0 = -2-2*0+0+1= 1-2+1+0= -1-2*0+0+0=0 wartości podstawione do wzorów 0-1 0 0 1 0-1 0 0 mnożnik w SD (interesują nas tylko cyfry od x o w lewo) UWAGA! Liczba w zapisie SD nie ma jednoznacznej postaci więc wyniki wyliczone różnymi algorytmami mogą się różnić co do zapisu (ale nie co do wartości). Algorytm Booth'a-McSorleya produkuje zawsze przynajmniej taką samą, a najczęściej większą, liczbę zer. Więcej zer to mniej liczenia :) Samo mnożenie wykonujemy tak samo jak w poprzednim przypadku. 6