Katedra Elektrotechniki Teoretycznej i Informatyki. sem. II - wykłady M. Czyżak

Podobne dokumenty
Systemy zapisu liczb.

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

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

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

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

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

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

Stan wysoki (H) i stan niski (L)

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

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

1.1. Pozycyjne systemy liczbowe

Arytmetyka stałopozycyjna

Metoda znak-moduł (ZM)

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

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

SYSTEMY LICZBOWE. SYSTEMY POZYCYJNE: dziesiętny (arabski): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 rzymski: I, II, III, V, C, M

Podstawy Informatyki

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

Teoretyczne Podstawy Informatyki

Kodowanie liczb całkowitych w systemach komputerowych

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

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

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

Arytmetyka binarna - wykład 6

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

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

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

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

Technologie Informacyjne

Naturalny kod binarny (NKB)

DYDAKTYKA ZAGADNIENIA CYFROWE ZAGADNIENIA CYFROWE

Podstawy Informatyki

Kod U2 Opracował: Andrzej Nowak

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

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

Wstęp do Informatyki

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

Podstawy Informatyki dla Nauczyciela

SYSTEMY LICZBOWE 275,538 =

Wstęp do informatyki- wykład 2

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

System Liczbowe. Szesnastkowy ( heksadecymalny)

Systemem liczenia systemach addytywnych !!" Pozycyjny system liczbowy podstawą systemu pozycyjnego

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

Zapis liczb binarnych ze znakiem

Pracownia Komputerowa wykład VI

Operacje arytmetyczne

Pozycyjny system liczbowy

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

Architektura komputerów

Systemy liczbowe używane w technice komputerowej

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

Kodowanie informacji. Kody liczbowe

Arytmetyka liczb binarnych

Wprowadzenie do informatyki - ć wiczenia

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Systemem liczenia systemach addytywnych !!" Pozycyjny system liczbowy podstawą systemu pozycyjnego

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

Cyfrowy zapis informacji

Reprezentacja stałoprzecinkowa. Reprezentacja zmiennoprzecinkowa zapis zmiennoprzecinkowy liczby rzeczywistej

Techniki multimedialne

dr inż. Jarosław Forenc

Dodawanie liczb binarnych

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

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Wstęp do informatyki- wykład 1

Systemy liczbowe. Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz

DZIESIĘTNY SYSTEM LICZBOWY

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Architektura komputerów

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

Urządzenia Techniki. Klasa I TI. System dwójkowy (binarny) -> BIN. Przykład zamiany liczby dziesiętnej na binarną (DEC -> BIN):

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

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Jednostki informacji. Bajt moŝna podzielić na dwie połówki 4-bitowe nazywane tetradami (ang. nibbles).

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

Pracownia Komputerowa wykład IV

Pracownia Komputerowa wyk ad VI

Cyfrowy zapis informacji. 5 grudnia 2013 Wojciech Kucewicz 2

1. Operacje logiczne A B A OR B

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

O systemach liczbowych

Języki i metodyka programowania. Reprezentacja danych w systemach komputerowych

Wykład I: Kodowanie liczb w systemach binarnych. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Powtórzenie podstawowych zagadnień. związanych ze sprawnością rachunkową *

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

Pracownia Komputerowa wykład V

Technologie Informacyjne Wykład 4

LICZBY ZMIENNOPRZECINKOWE

Architektura systemów komputerowych. Arytmetyka maszyn cyfrowych

2.3. Wyznaczanie wartości wielomianu, pozycyjne systemy liczbowe i reprezentacja danych liczbowych w komputerze

Moduł 2 Zastosowanie systemów liczbowych w informacji cyfrowej

L6.1 Systemy liczenia stosowane w informatyce

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

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

przeniesienie pożyczka

4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura

Architektura systemów komputerowych. Poziom układów logicznych. Układy mnoŝące i dzielące

...o. 2. ZARYS ORGANIZACJI MASZYNY TYPOWEJ

Transkrypt:

Katedra Elektrotechniki Teoretycznej i Informatyki sem. II - wykłady 8-11 M. Czyżak

Arytmetyka komputerowa (ang. computer arithmetic) zajmuje się problemami realizacji obliczeń w urządzeniach cyfrowych. Obejmuje ona zagadnienia teoretyczne takie jak systemy liczbowe przydatne w projektowaniu urządzeń liczących lub w programowej realizacji obliczeń.

Zagadnienia związane z systemami liczbowymi obejmują m. in - konstrukcję systemów liczbowych - badanie własności systemów liczbowych.

Przedmiotem arytmetyki komputerowej jest ponadto realizacja podstawowych operacji arytmetycznych takich jak dodawanie i odejmowanie liczb bez znaku i ze znakiem, mnożenie i dzielenie jak i obliczanie standardowych funkcji arytmetycznych (np. sinus, cosinus, logarytm naturalny, arcsin, arctg, pierwiastek kwadratowy )

Arytmetyka komputerowa zajmuje się także syntezą szybkich i efektywnych układów do realizacji wyżej wymienionych operacji. Ten dział arytmetyki komputerowej wiąże się ściśle z technologią wielkiej skali integracji VLSI (Very Large Scale of Integration).

Aktualne zagadnienia arytmetyki komputerowej to m.in. - bardzo szybka realizacja obliczeń z wykorzystaniem potokowania (ang. pipelining) - wykonywanie operacji arytmetycznych z małym poborem mocy (ang. low-power arithmetic). Zagadnienie to ma szczególne znaczenie w związku z rozwojem urządzeń mobilnych, jak również ze wzrostem stosowanych częstotliwości zegarowych, zważywszy na fakt, iż pobór mocy w urządzeniach VLSI jest liniowo proporcjonalny do częstotliwości zegara.

Uwagi wstępne o systemach liczbowych(cz. I) Systemy reprezentacji liczb rozwijały się wraz z rozwojem języka. Najstarsze metody reprezentacji liczb to reprezentowanie przy użyciu różnych przedmiotów np. kamieni lub patyczków (łac. calculus oznacza kamyczek).

Uwagi wstępne o systemach liczbowych(cz. II) Jednak gdy powstała konieczność stosowania większych liczb, ich reprezentowanie z użyciem pojedynczych przedmiotów jak też porównywanie takich liczb stawało się coraz trudniejsze. Pierwszym udoskonaleniem było grupowanie przedmiotów reprezentujących jednostki (np. liczbę 23 reprezentowano jako 4 grupy po 5 kamyczków oraz 3 osobne). Główny przełom stanowiło jednak wprowadzenie większych przedmiotów reprezentujących grupę 5 lub 10 jednostek.

Metoda ta rozwinęła się do formy symbolicznej, gdy zaczęto stosować specjalne symbole do oznaczenia większych jednostek. Znanym przykładem jest zapis rzymski. Jednostkami w tym systemie są 1, 5, 10, 50, 100, 500, 1000, 10000 i 100000, które są oznaczane odpowiednio symbolami I, V, X, L, C, D, M, ((I)) i (((I))). Liczbę w tym systemie reprezentuje się w postaci łańcucha symboli o wartości malejącej od lewej strony.

Aby skrócić zapis przyjęto, że symbol znajdujący się po lewej stronie większego symbolu reprezentuje wartość ujemną. Np. liczbę 9 bezpośrednio można by zapisać jako VIIII, jednak wygodniejszy jest zapis IX. Podobnie liczbę 450 można by zapisać jako CCCCL, jednak zapis LD jest bardziej dogodny.

System rzymski nie jest odpowiedni do reprezentowania dużych liczb jak również trudno jest wykonywać operacje arytmetyczne z jego użyciem. Istotną innowacją było wprowadzenie przez Chińczyków systemu pozycyjnego(wagowego), w którym wartość reprezentowana przez dany symbol nie zależy tylko od niego samego, ale także od jego położenia względem innych symboli. Przykładowo, w liczbie 555 każda z cyfr "5", reprezentuje inną wartość. Skrajna od lewej reprezentuje 500, środkowa 50, a skrajna z prawej 5.

System liczbowy, S można określić jako zbiór S={X, X, F}, gdzie X - zbiór wartości abstrakcyjnych liczb, X - zbiór reprezentacji liczb, F: X X. Ogólnie reprezentację liczby można zapisać następująco, (x n-1, x n-2,...,x 0 ), gdzie x i, i=0,1,2,..., n -1 są cyframi reprezentacji. Dla popularnych systemów pozycyjnych nie stosuje się zwykle przy zapisie nawiasów ani przecinków.

System wagowy W systemie wagowym liczba X jest przedstawiana w sposób następujący: X gdzie w i W a n 1 im d i w i d i D zbiór W zwany jest zbiorem wag, a zbiór D zbiorem cyfr.

System ze stałą podstawą Jeżeli wszystkie wagi są potęgami pewnej stałej r, w i = r i to taki system wagowy nazywamy systemem ze stałą podstawą (ang. fixed - radix number system). Liczbę X można w takim systemie zapisać w sposób następujący X n 1 im d i r i

System wagowy o mieszanych podstawach Zbiór dozwolonych cyfr jest taki sam na każdej pozycji. Istnieją też, będące w powszechnym użyciu, systemy wagowe nie będące systemami o stałej podstawie, np. system zliczania czasu. Niech T oznacza czas w ciągu doby wyrażony w sekundach dla pewnej liczby godzin, minut i sekund. T możemy zapisać jako T E0 E1 60 E2 60 60

System wagowy o mieszanych podstawach gdzie poszczególne cyfry mogą przyjmować wartości z następujących zakresów 0 E0 60 0 E 1 60 0 E2 24

Bezwzględną dokładność reprezentacji liczby w systemie wagowym wyznacza waga najmniej znaczącej pozycji czyli r - m. W systemie ze stałą podstawą reprezentacja zera unikalna, gdyż nie istnieje liczba różna od {0,0,...,0}, której wartością byłoby zero. W systemie takim liczby najmniejsza, N i największa, P reprezentowalne na n pozycjach, mają postać P N (0,0,0,...,0) ( r 1, r 1, r 1,..., r 1)

Sposób reprezentacji liczb wpływa nie tylko na łatwość odczytywania liczb, a także na złożoność algorytmów arytmetycznych stosowanych przy realizacji operacji na liczbach. Systemy pozycyjne zawdzięczają swą popularność, przynajmniej częściowo, dostępności prostych i wygodnych algorytmów do realizacji działań na liczbach reprezentowanych w tych systemach. Istnieją jednak systemy niepozycyjne, takie jak resztowy system liczbowy, które mają przewagę nad systemami pozycyjnymi przy realizacji niektórych działań arytmetycznych w pewnych dziedzinach zastosowań.

W systemach cyfrowych liczby są kodowane przy użyciu cyfr binarnych zwanych bitami. Stosowanie systemu binarnego wynika z powodów technologicznych, gdyż w fizycznych urządzeniach łatwiej jest reprezentować dwa stany, którym przypisuje się cyfry binarne.

Elementy systemów liczbowych Operandami algorytmów arytmetyki komputerowej są więc kody reprezentujące liczby. Zbiór kodów takich jest jednak zbiorem dyskretnym i skończonym, stąd nie wszystkie reguły arytmetyki konwencjonalnej, stosują się do algorytmów arytmetyki komputerowej. Stosuje się zasadniczo dwa rodzaje reprezentacji liczb w komputerach

Elementy systemów liczbowych Typy reprezentacji - reprezentację stałoprzecinkową (ang. fixed-point representation), gdzie liczba pozycji przeznaczonych do zakodowania części całkowitej liczby i części ułamkowej liczby jest stała, - reprezentację zmiennoprzecinkową (ang. floating-point representation), w której osobno jest kodowana jest mantysa wraz ze znakiem oraz osobno cecha określająca relację między liczbą a mantysą.

Przykład. Reprezentacja stałoprzecinkowa o 8 pozycjach może być zapisana następująco xxxx.xxxx Kropka ( lub przecinek) oddziela cześć całkowitą od części ułamkowej. W systemie dziesiętnym można przy użyciu takiej reprezentacji przedstawiać liczby z następującego zakresu [0000.0000, 9999.9999], a w systemie binarnym z zakresu [0000.0000,1111.1111].

Reprezentacja zmiennoprzecinkowa liczby nieujemnej w systemie dziesiętnym ma postać ( m p-1, m p-2,.., m 0, c q-1, c q-2,.., c 0 ), Cyfry m i, i=0,1,.., p-1 i c i,i=0,1,..,q-1 są cyframi dziesiętnymi, cyfry m i reprezentują mantysę, a c i cechę. Liczba tutaj ma wartość c m 10 Mantysa i cecha są liczbami stałoprzecinkowymi. Reprezentacja taka nie jest jednoznaczna, np. liczba 12.35 może być reprezentowana jako 1.235 10 1 0.1235 10 2

Reprezentacja zmiennoprzecinkowa w systemie binarnym w najprostszym przypadku może mieć następującą postać (m p-1, m p-2,.., m 0, c q-1, c q-2,.., c 0 ), Cyfry m i, i=0,..,p-1 i c i, i=0,1,..,q-1 są tutaj cyframi binarnymi, a mantysa m jest liczbą ułamkową z przedziału Liczba ma wartość 0.5 m c m 2 1

Liczby w systemach cyfrowych są kodowane przy użyciu bitów. Kodowanie oznacza, że każdej liczbie, która ma być reprezentowana w danym systemie cyfrowym, przypisuje się pewien kod - ciąg bitów reprezentujący tę liczbę. Przypisanie to powinno być logiczne i systematyczne, tak aby umożliwiało prostą realizację operacji arytmetycznych, jak również proste sprawdzanie osobliwości lub specjalnych przypadków.

Systemy binarny naturalny, oktalny i heksadecymalny Systemy te mają zasadnicze znaczenie w informatyce. System binarny (dwójkowy) naturalny W systemie binarnym r = 2 oraz reprezentacja ma postać X = (x n-1, x n-2,...,x 0 ) x i 0,1 Wartość liczby o reprezentacji X można obliczyć z zależności X n 1 i0 x 2 i i

Przykład. Znaleźć wartości dziesiętne następujących liczb binarnych a) X 1 =(101) 2 b) X 2 =(11001) 2 c) X 3 =(11111111) 2

Maksymalna wartość liczby binarnej reprezentowanej na n pozycjach o wagach od 1 do 2 n-1 jest równa. 2 n - 1 Warto zauważyć, że liczba 2 n wymaga reprezentacji na n+1 pozycjach. Stosując system binarny często używa się określeń bajt, liczba dwu -, czterobajtowa, a także n - bajtowa. Bajt oznacza liczbę złożoną z 8 cyfr binarnych o wagach od 1 do 2 n-1 i maksymalnej wartości 2 8-1. Liczba dwubajtowa oznacza liczbę złożoną z 16 cyfr binarnych o wagach od 1 do 2 15, o maksymalnej

a) system oktalny (ósemkowy), w systemie tym podstawa r = 8 oraz x i 0,1,2,3,4,5,6,7 n 1 X 8 i0 x i i a)x 1 =(31) 8 = (25) 10 b)x 2 =(77) 8 = (63) 10 c)x 3 =(775) 8 =(509) 10

System heksadecymalny (szesnastkowy), W systemie tym podstawa systemu r = 16. Wartość liczby heksadecymalnej wyraża się wzorem n 1 X 16 i0 x i x i 0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F i a) X 1 =(2B) 16 = (43) 10 b) X 2 =(FF) 16 = (255) 10 c) X 3 =(ABC) 16 =(2748) 10

Konwersje międzysystemowe Konwersja międzysystemowa to operacja znajdowania reprezentacji liczby X w pewnym systemie liczbowym, gdy dana jest reprezentacja tej liczby w innym systemie liczbowym. Zasadniczo konwersję międzysystemową dla systemów ze stałą podstawową można wykonać stosując ogólną metodę konwersji przedstawioną poniżej,

Konwersje międzysystemowe Ogólna procedura konwersji Oznaczmy przez r podstawę systemu ze stałą podstawą, z którego dokonujemy konwersji, a przez R podstawę systemu, do którego ma następować konwersja. Procedura konwersji polega na dzieleniu liczby przedstawionej przy podstawie r, przez liczbę R, przedstawioną przy podstawie r i wyznaczaniu reszty z dzielenia.

Konwersje międzysystemowe Konwersja system binarny naturalny - system dziesiętny Konwersję tę realizuje się stosując zależność n 1 X 2 i0 x i i

Konwersja system dziesiętny - system binarny naturalny Można tutaj zastosować ogólny algorytm konwersji dla r =10 i R = 2. Przykład. Znaleźć reprezentacje binarne liczb 30 i 23. X R reszta 30 2 0 15 2 1 7 2 1 3 2 1 1 2 1 0 2 23 2 1 11 2 1 5 2 1 2 2 0 1 2 1 0 2

Przykład. Wyznaczanie reprezentacji binarnej liczby 8-bitowej. #include <stdio.h> #include <conio.h> int main() { char x=30; int i, bit[8]; for (i=0;i < 8;i++) { if (x%2==1) bit[i] = 1; else bit[i] = 0; x=x/2; } for (i=7;i>=0;i--) printf(" %d ",bit[i]); getch(); return 0; }

Konwersja ułamków z systemu binarnego do systemu dziesiętnego Wartość ułamka binarnego można obliczyć w sposób następujący m i1 X F x i 2 i Wagi w powyższym wzorze są ujemne i wynoszą kolejno 2-1, 2-2, 2-3,.., 2 -m. Przykładowo, ułamkowi binarnemu (0.11) 2 odpowiada ułamek dziesiętny 0.75, a (0.011) 2 0.375.

Konwersja ułamków z systemu dziesiętnego do systemu binarnego Przykład. Dla danego ułamka dziesiętnego należy wyznaczyć jego reprezentację binarną 0. 375 x 2 0 750 x 2 1 500 x 2 1 000 0. 625 x 2 1 250 x 2 0 500 x 2 1 000

Konwersja z systemu oktalnego do systemu dziesiętnego n 1 X 8 i0 x i Konwersja z systemu dziesiętnego do systemu oktalnego i X R reszta 701 : 8 5 87 : 8 7 10 : 8 2 1 : 8 1 0

Konwersja z systemu heksadecymalnego do systemu dziesiętnego n 1 X 16 i0 x i i Przykłady obliczeń są przy opisie systemu heksadecymalnego

Konwersja z systemu dziesiętnego do systemu heksadecymalnego Przykład. Zamienić liczbę dziesiętną X=3625 na postać heksadecymalną X R reszta 3627 : 16 11=B 226 : 16 2 14 : 16 14=E Wartość liczby w postaci heksadecymalnej równa jest 0 E2B.

Konwersja z systemu binarnego do systemu oktalnego (cz.1) Przykład. Konwersja liczby binarnej 12-bitowej na postać oktalną (d 3, d 2, d 1, d 0 ) x 11 x 10 x 9 x 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1 x 0 d 3 =x 8 2 2 +x 7 2 1 +x 6 d 0 =x 2 2 2 +x 1 2 1 +x 0 d 4 =x 11 2 2 +x 10 2 1 +x 9 d 1 =x 5 2 2 +x 4 2 1 +x 3

Konwersja z systemu binarnego do systemu oktalnego (cz.2) Konwersja, przedstawiona powyżej, ta polega na podziale liczby binarnej na segmenty 3-cyfrowe i przypisaniu każdemu segmentowi cyfry oktalnej równej jego wartości. Przykład. Zrealizować konwersję liczby binarnej 101101111011 na postać oktalną. 101 101 111 011 5 5 7 3 (liczba oktalna)

Konwersja z systemu binarnego do systemu heksadecymalnego (cz.1) Przykład. Konwersja liczby binarnej 12-bitowej na postać heksadecymalną (d 2, d 1, d 0 ) x 11 x 10 x 9 x 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1 x 0 d 2 = x 11 2 3 x 10 2 2 +x 9 2 1 +x 8 d 1 = x 7 2 3 x 6 2 2 +x 5 2 1 +x 4 d 0 = x 3 2 3 x 2 2 2 +x 1 2 1 +x 0

F 7 B (liczba heksadecymalna) Konwersja z systemu binarnego do systemu heksadecymalnego (cz.2) Konwersja ta, przedstawiona powyżej, polega na podziale liczby binarnej na segmenty 4-cyfrowe i przypisaniu każdemu segmentowi cyfry heksadecymalnej równej jego wartości. Przykład. Zrealizować konwersję liczby binarnej 111101111011 na postać heksadecymalną. 1111 0111 1011

Konwersja z systemu oktalnego do systemu binarnego (cz.1) Przykład. Konwersja liczby oktalnej 4 - cyfrowej na postać binarną (d 3, d 2, d 1, d 0 ) d 3 d 2 d 1 d 0 x 11 x 10 x 9 x 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1 x 0 d 4 =x 11 2 2 +x 10 2 1 +x 9 d 3 =x 8 2 2 +x 7 2 1 +x 6 d 1 =x 5 2 2 +x 4 2 1 +x 3 d 0 =x 2 2 2 +x 1 2 1 +x 0

Konwersja z systemu oktalnego do systemu binarnego (cz.2) Konwersja ta polega na przypisaniu poszczególnym cyfrom oktalnym ich 3-cyfrowych reprezentacji binarnych. Przykład. Zrealizować konwersję liczby oktalnej 5061 na postać binarną. 5 0 6 1 (liczba oktalna) 101 000 110 001 (liczba binarna)

Przesunięcie binarne w rejestrze Rejestr jest urządzeniem cyfrowym mogącym przechować pewną liczbę bitów. Rejestr przechowuje poszczególne bity w swoich komórkach. Bit może być do takiej komórki zapisany lub z niej odczytany. Typowe długości rejestrów to 8-, 16-, 24-, 32 lub 64 bity, jednak rejestr może mieć dowolną długość. Przesunięcie binarne polega na przepisaniu pewnych komórek rejestru do innych komórek lub poza rejestr.

Wyróżniamy następujące rodzaje przesunięć binarnych a) przesunięcie logiczne w lewo Przy przesunięciu tym na puste pozycje rejestru z prawej strony wchodzą zera. Rejestr przed przesunięciem logicznym w lewo. 0 0 1 1 0 0 0 1 1 0 0 Rejestr po przesunięciu o jedną pozycję w lewo

Wartość liczby Y uzyskanej po przesunięciu liczby X o k pozycji w lewo w rejestrze n - bitowym wyraża się wzorem Y X 2 k 2 n Przykład. Obliczyć wartość liczby uzyskanej w wyniku przesunięcia liczby 6 o trzy pozycje w lewo w rejestrze 5-bitowym.

b) przesunięcie logiczne w prawo Przy przesunięciu tym na puste pozycje rejestru z lewej strony wchodzą zera, skrajne bity z prawej strony wychodzą poza rejestr. Rejestr przed przesunięciem logicznym w prawo. 1 0 1 1 1 0 1 0 1 1 Rejestr po przesunięciu o jedną pozycję w prawo.

Wartość liczby Y uzyskanej po przesunięciu w rejestrze liczby X o k pozycji w prawo w rejestrze n-bitowym wyraża się wzorem Y X k 2 Przykład. Obliczyć wartość liczby uzyskanej w wyniku przesunięcia liczby 23 o trzy pozycje w prawo w rejestrze 5-bitowym.

Rejestr po przesunięciu arytmetycznym o jedną pozycję w prawo. c1) przesunięcie arytmetyczne w prawo przypadek 1 Przy przesunięciu tym do kolejnych bitów rejestru z lewej strony wchodzą wartości równe bitowi o najwyższej wadze (skrajnemu bitowi z lewej strony, bit znaku) Rejestr przed przesunięciem arytmetycznym w prawo. 2 4 Bit o najwyższej wadze ( 2 4 ) równy 1 1 0 1 1 1 1 1 0 1 1

Rejestr po przesunięciu arytmetycznym o jedną pozycję w prawo. c2) przesunięcie arytmetyczne w prawo przypadek 2 W tym przypadku bit o najwyższej wadze( 2 4 ) jest równy 0. Rejestr przed przesunięciem arytmetycznym w prawo. 2 4 Bit o najwyższej wadze ( 2 4 ) równy 0 0 0 1 1 1 0 0 0 1 1

d) przesunięcie cykliczne w lewo W tym przypadku najstarszy bit wchodzi na najmłodszą pozycję, a pozostałe bity są przesuwane o jedną pozycję w lewo Rejestr przed przesunięciem cyklicznym w lewo. 1 0 1 0 1 Rejestr po przesunięciu cyklicznym o jedną pozycję w lewo. 0 1 0 1 1

f) przesunięcie cykliczne w prawo W tym przypadku najmłodszy bit wchodzi na najstarszą pozycję, a pozostałe bity są przesuwane o jedną pozycję w prawo. Rejestr przed przesunięciem cyklicznym w prawo. 1 0 1 0 1 Rejestr po przesunięciu cyklicznym o jedną pozycję w prawo. 1 1 0 1 0

Dodawanie binarne w naturalnym kodzie binarnym (1) Dodawanie dwóch liczb binarnych n -bitowych A+B można przedstawić następująco: a n-1 a n-2 a n-3... a 0 liczba A. b n-1 b n-2 b n-3... b 0 liczba B s n s n-1 s n-2 s n-3... s 0 suma A+B Dodawanie takie odbywa się poprzez dodawanie kolejnych cyfr obu liczb (bitów) począwszy od najmłodszej pary bitów przy uwzględnieniu przy każdym dodawaniu przeniesienia z poprzedniej pozycji. Zwykle zakłada się, że przeniesienie do najmłodszej pozycji ( o wadze 2 0 ) jest

Dodawanie binarne w naturalnym kodzie binarnym (2) Reguły dodawania binarnego na jednej pozycji Dodawane liczby Suma Przeniesienie 0+0 0 0 0+1 1 0 1+0 1 0 1+1 0 1

Dodawanie binarne w naturalnym kodzie binarnym (3) Reguły dodawania binarnego na jednej pozycji z uwzględnieniem przeniesienia a i b i c i s i c i+1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1

Dodawanie binarne w naturalnym kodzie binarnym (4) W powyższej tabeli a i, b i oznaczają cyfry na i - tej pozycji, c i oznacza przeniesienie wchodzące do i-tej pozycji, a c i+1 przeniesienie wychodzące z i- tej pozycji. Warto zauważyć, że suma dwóch liczb binarnych może wymagać n+1- bitów. Długość binarną sumy, n s dla sumowania m składników binarnych n - bitowych można obliczyć w sposób następujący: n s = log 2 m(2 n -1)+1

Dodawanie binarne w naturalnym kodzie binarnym (5) Przykład. Obliczyć sumę liczb binarnych A =10111 i B = 10101 1 0 1 1 1 przeniesienia 10111 A 10101 B 101100 A+B

// Symulator dodawania binarnego liczb 8 bitowych #include <stdio.h> #include <stdlib.h> #define N 8 int main(int argc, char *argv[]) { int A[8]={1,1,1,1,0,0,0,0}, B[8]={1,1,1,1,0,0,0,0}; int suma[n+1],s,i, przeniesienie=0; for(i=0;i<n;i++) { s=a[i]+b[i]+przeniesienie; suma[i]=s%2; przeniesienie= s/2; } suma[n]=przeniesienie; for (i=n;i>=0;i--) printf("%d ", suma[i]); printf("\n"); system("pause"); Wynik działania programu: 0 0 0 1 1 1 1 0

Odejmowanie binarne (1) Odejmowanie A - B dwóch liczb binarnych n - bitowych nieujemnych można przedstawić następująco: a n-1 a n-2 a n-3... a 0. + b n-1 b n-2 b n-3... b 0 B A n n-1 n-2 n-3... 0 A-B Odejmowania takie odbywa się poprzez odejmowanie kolejnych cyfr obu liczb(bitów) począwszy od najmłodszej pary bitów przy uwzględnieniu przy każdym odejmowaniu pożyczki (przeniesienia o wartości ujemnej) z poprzedniej pozycji. Różnica może być ujemna, stąd pojawia się problem dodatkowego bitu reprezentującego znak różnicy.

Odejmowanie binarne (2) Zwykle się przyjmuje, że znak minus jest reprezentowany przez liczbę 1, a znak plus przez 0. Wartość liczby uzyskanej w wyniku odejmowania można więc określić następująco: A - B = - n 2 n + 1 6 2 5 8 5 2 7-1 3 0 9 8 n-1 i0 i 2 i -1 * 10000+3098 = - 6902 Poniżej w tabeli podano reguły odejmowania binarnego.

Odejmowanie binarne (3) Reguły odejmowania binarnego na jednej pozycji z uwzględnieniem przeniesienia (pożyczki) a i b i c i,in i c i,out 0 0 0 0 0 0 1 0 1-1 1 0 0 1 0 1 1 0 0 0 0 0-1 1-1 0 1-1 0-1 1 0-1 0 0 1 1-1 1-1

Odejmowanie binarne (4) Przykład. Obliczyć różnicę liczb binarnych a) A 1 =10000 i B 1 =1011, b) A 2 =101010, B 2 =010111 a) -1-1-1-1 przeniesienia (pożyczki) 10000 A 1-01011 B 1 00101 A 1 -B 1 b) -1 0-1-1-1 przeniesienia (pożyczki) 101010 A 2-010111 B 2 010011 A 2 - B 2

// Symulator odejmowania binarnego liczb 8-bitowych #include <stdio.h> #include <stdlib.h> #define N 8 int main(int argc, char *argv[]) { int A[8]={0,0,0,0,1,0,0,0}, B[8]={1,1,0,1,0,0,0,0}; int roznica[n+1],s;i; int pozyczka=0; for(i=0;i<n;i++) { s=a[i]-b[i]+pozyczka; switch (s) { case 0: roznica[i]=0; pozyczka=0; break; case 1: roznica[i]=1; pozyczka=0; break; case -1: roznica[i]=1; pozyczka=-1; break; case -2: roznica[i]=0; pozyczka=-1; break; } } roznica[n]=pozyczka; for (i=n;i>=0;i--) printf("%d ", roznica[i]); printf("\n"); system("pause"); return 0; }

Mnożenie binarne (1) Mnożenie liczb binarnych może być wykonywane w różny sposób. Przykładowo, dla krótkich operandów można stosować odczyt iloczynu z pamięci adresowanej słowem binarnym będącym połączeniem mnożnika i mnożnej. Istnieją też specjalne układy zwane mnożnikami. Najprostszy jednak sposób polega na wielokrotnym przesunięciu mnożnej i warunkowym sumowaniu przesuniętej mnożnej w zależności od wartości bitu mnożnika.

Algorytm mnożenia metodą dodaj-przesuń (ang, shift-add) a a a a p p p b 3 b 2 1 b b 3 2 1 0 (1) (1) (1) (1) 3 p2 p1 p0 (2) (2) (2) (2) p3 p2 p1 p0 (3) (3) (3) (3) p3 p2 p1 p0 (4) (4) (4) (4) 3 p2 p1 p0 7 p6 p5 p4 p3 p2 p1 p0 0 Przykład.. 1111 X 1001 1111 1111 10000111

Algorytm mnożenia liczb k-bitowych metodą dodaj-przesuń (ang, shift-add) Mnożenie P = AB, b i jest i - tym bitem mnożnika P 0 = 0, P i+1 = P i + b i A2 i, i = 0, 1, 2,...,k-1. Algorytm 1. Krok 0. Ładuj mnożną A do rejestru X i mnożnik B do rejestru Y. Krok 1. Ładuj 0 do rejestru I Krok 2. Powtarzaj kroki 2a i 2b dla i = 0,1,2,...,k-1. Krok 2a. Jeżeli Y i =1 wtedy // (sprawdzanie i-tego bitu mnożnika) I I + X Krok 2b. X 2X - przesuwanie rejestru X o 1 bit w lewo

Algorytm mnożenia liczb metodą rosyjskich wieśniaków (ang, Russian Peasants, RP) Przykład. Zrealizować mnożenie liczb A=24 i B=25 metodą RP. A B 25 24 12 48 6 96 3 192 1 384 600

Wybrane reprezentacje liczb ze znakiem (1) Przy odejmowaniu pojawia się problem reprezentacji liczb ze znakiem. Forma reprezentacji powinna być taka, aby w możliwie dużym stopniu ułatwiała układową realizację liczb ze znakiem. Trzy najczęściej stosowane reprezentacje to: -reprezentacja znak-moduł ( kod znak-moduł, sign-magnitude representation) - reprezentacja z uzupełnieniem do 1 (kod U1, ang. one s complement representation) - reprezentacja z uzupełnieniem do 2 ( kod U2, ang. two s complement representation)

Cyfry x n-2 x n-3... x 0 reprezentują moduł liczby. Elementy arytmetyki komputerowej Wybrane reprezentacje liczb ze znakiem (2) Reprezentacja stałoprzecinkowa liczb ze znakiem ma postać: X x x... x n1 n2 0 Zwykle cyfrę x n-1 rezerwuje się na znak. Znak liczby przyjmuje wartość x n 1 0 r 1 dla dla X X 0 0

Wybrane reprezentacje liczb ze znakiem (2) Reprezentacja znak-moduł Liczby nieujemne dla podstawy r=2 (system binarny) są przedstawiane następująco: X 0 x x x, a liczby ujemne :... n2 n3 0 X 1 x x x... n2 n3 0.

Wybrane reprezentacje liczb ze znakiem (2) Reprezentacja z uzupełnieniem do 1 Liczby nieujemne dla r=2 są przedstawiane następująco: X 0 x x x... n2 n3 0 a liczby ujemne : X 1 x x x... n2 n3 0 x 1 dla 0 n 2 i x i i są cyframi liczby dodatniej o tej samej wartości bezwzględnej, co dana liczba ujemna.

Elementy systemów uzupełnieniowych (1) Celem stosowania systemów uzupełnieniowych jest uproszczenie realizacji odejmowania, poprzez zastąpienie odejmowania prostszymi operacjami arytmetycznymi. Podstawowe pojęcia w tych systemach to dopełnienie i uzupełnienie. Def. (dopełnienie) Dla systemu ze stałą podstawą r dopełnieniem nieujemnej liczby n - cyfrowej X nazywamy liczbę X określoną w następujący sposób Liczba r n - 1 ma postać X = r n - 1- X (r -1, r -1, r -1, r - 1,...,r -1)

Elementy systemów uzupełnieniowych (2) Przykład. Obliczyć dopełnienie dla danej liczby dziesiętnej X = 2352. 9999-2352 7647 - dopełnienie liczby -2352 Jak można zauważyć, odejmowanie jest tutaj dużo prostsze, gdyż nie są wymagane pożyczki ze starszych pozycji, z uwagi na to, że 9 jest największą cyfrą w systemie dziesiętnym. W systemie binarnym przy obliczaniu dopełnienia nie jest konieczne odejmowanie. Może być ono zastąpione negacją (zamianą zera na 1 lub 1 na zero).

Elementy systemów uzupełnieniowych (3) Def. (uzupełnienie) Dla systemu ze stałą podstawą r uzupełnieniem nieujemnej liczby n - cyfrowej X nazywamy liczbę X * określoną w następujący sposób X * = r n - X Reprezentacja liczby r n ma postać (1,0, 0,0,0,...,0) n zer

Elementy systemów uzupełnieniowych (5) Przydatność uzupełnienia wynika z faktu, że odejmowanie może, przy spełnieniu pewnych warunków, być zastąpione dodawaniem uzupełnienia X + X * = X +(r n - X)=r n Dodawanie liczby i jej uzupełnienia daje r n, jednak reprezentacja liczby r n na n pozycjach ma zera, czyli reprezentuje zero. A więc dodawanie X + X * daje ten sam wynik co X - X = 0, a przeniesienie, czyli r n, należy odrzucić.

Przykład. Obliczyć różnicę X - Y = 3523-1235 przy zastosowaniu uzupełnienia dla danej liczby dziesiętnej. Obliczenie dopełnienia Y 9999-1235 8764 Obliczenie uzupełnienia Y Obliczenie różnicy Elementy systemów uzupełnieniowych (6) Y * =8764+1=8765 3523 +8765 1 2288

Reprezentacja z uzupełnieniem do 2 (kod U2) Liczby nieujemne dla r = 2 są przedstawiane następująco: X 0 x x x... n2 n3 0 a liczby ujemne : X ~ 1 x x... x n2 n3 0 1 Wyznaczenie reprezentacji danej liczby ujemnej w kodzie U2 wymaga wyznaczenia reprezentacji w kodzie U1, dodania 1 i odrzucenia przeniesienia z najwyższego bitu ( bit MSB).

Dodawanie w kodzie U2 Algorytm (dodawanie X +Y w U2) Dane: n - bitowe reprezentacje X i Y w U2 Krok 1. Wykonaj dodawanie bitów obu reprezentacji łącznie z bitami znaku. Krok 2. Porównaj przeniesienie do bitu znaku c MSB z przeniesieniem z bitu znaku c S. Jeśli są one równe rezultat jest w poprawnej formie U2, w przeciwnym przypadku wystąpił nadmiar. 0 1 0 1 1 0 0 0 1 1 X Y c s c MSB 0 1 1 1 0 X+Y

Przykład. Zrealizować dodawanie liczb 13 + 11, 13+(-11), (-11)+(-13) w kodzie U2 dla 6-bitowych reprezentacji. a) 13 (13) 10 = (001101) 2 + 11 (11) 10 = (001011) 2 +24 001101 c msb =c s =0 + 001011 011000

b) Przykład cz. 2 Dodawanie w U2 13 (13) 10 = (001101) 2 +(- 11) (-11) 10 =(110101) 2, -11 w U2 2 001101 c msb =c s =1 + 110101 1 000010

c) Przykład cz. 3 Dodawanie w U2 (-13) (-13) 10 = (110011) 2 +(- 11) (-11) 10 = (110101) 2, -11 w U2-24 110011 c msb = c s =1 + 110101 1 101000-24 w U2

Odejmowanie w kodzie U2 Algorytm (odejmowanie X +Y w U2) Dane: n - bitowe reprezentacje X i Y w U2 Krok 1. Utwórz uzupełnienie do 2 odjemnika Krok 2. Wykonaj dodawanie odjemnej i uzupełnienia do 2 odjemnika Krok 3. Porównaj przeniesienie do bitu znaku c MSB z przeniesieniem z bitu znaku c S. Jeśli są one równe rezultat jest w poprawnej formie U2, w przeciwnym przypadku wystąpił nadmiar.

Przykład. Zrealizować odejmowania liczb 13 - (+11), 13- (-11), (-11)-(-13) w kodzie U2 dla 6-bitowych reprezentacji. a) 13 (13) 10 = (001101) 2 -(+11) (-11) 10 = (110101) 2, -11 w U2 +2 001101 c msb = c s =1 + 110011 1 000010

b) Przykład cz. 2 Odejmowanie w U2 (-13) (-13) 10 = (110011) 2 - ( -11) (-11) 10 = (110101) 2, -11 w U2-24 uzupełnienie (-11) 001011 110011 c msb =c s =1 + 001011 1 111110-2 w U2

Dzielenie binarne w formie pisemnej może być zrealizowane przy użyciu algorytmu dzielenia stosowanego dla innych podstaw systemu liczbowego( np. r =10). Przykład. Zrealizować dzielenie 111011:101, odpowiada ono dzieleniu 59:5 w systemie dziesiętnym. (dzielna) 1011 (iloraz) 111011 : 101(dzielnik) - 101 1001-0101 Dzielenie binarne (1) 1001-0101 100 (reszta z dzielenia)

Dzielenie binarne (2) Dzielenie binarne realizowane maszynowo (układowo lub programowo) jest działaniem znacznie trudniejszym niż mnożenie binarne. W przypadku mnożenia binarnego operandów k-bitowych, otrzymywany wynik jest w ogólnym przypadku 2k-bitowy. Natomiast przy dzieleniu binarnym długość ilorazu w bitach jest znacznie trudniejsza do przewidzenia.

Dzielenie binarne (3) Przykładowo, rozważmy dzielenie całkowite liczby 2kbitowej przez k - bitową. Aby dzielenie takie było wykonalne, reprezentacja binarna reszty otrzymywanej w trakcie procesu dzielenia nie może przekraczać 2k bitów, gdyż w przeciwnym przypadku nie byłoby możliwe jej odjęcie od dzielnej reprezentowanej na 2k-bitach.

Dzielenie binarne (4) Jednak przy dzielniku k - bitowym iloraz może być dłuższy niż k bitów, a więc reszta mogłaby w ogólnym przypadku przekraczać 2k bitów. Stąd dzielenie przy takich długościach rejestrów nie jest bezpośrednio wykonalne. Przyjmując więc, że reszta ma być co najwyżej 2k-bitowa, przy k-bitowym dzielniku, iloraz nie może mieć długości większej niż k bitów. Jeżeli jednak okazuje się, że iloraz wymaga więcej niż k bitów, sytuacja taka traktowana jest jako nadmiar.

z (dzielna) d (dzielnik) q (iloraz) s reszta 0 1 2 2 1 2... z z z z k k Oznaczenia: 0 1 2 1... d d d d k k 0 1 2 1... q q q q k k 0 1 2 1... s s s s k k

Dzielenie binarne (6) Podstawowe równanie dla dzielenia ma postać: z d q s Nadmiar nie wystąpi, jeżeli liczba reprezentowana przez k pierwszych bitów dzielnej (licząc od bitu o najwyższej wadze) jest mniejsza od dzielnika. Warunek ten można to zapisać następująco: z 2 k Rezultatem dzielenia jest liczba reprezentowana przez najstarsze k bitów dzielnej. Jeżeli liczba ta jest mniejsza od dzielnika d, to jej iloraz przez d będzie równy zeru czyli iloraz d

Dzielenie binarne (7) Przykład. Zrealizować dzielenie 101100:111, odpowiada ono dzieleniu 44:7 w systemie dziesiętnym. 110 101100 : 111-111 1000-0111 10 W tym przypadku spełniony jest warunek, że najstarsze k bitów dzielnej reprezentuje liczbę mniejszą od dzielnika.

Dzielenie binarne (7) Dzielenie binarne liczb całkowitych, przedstawione powyżej, może być zrealizowane przy zastosowaniu następującego algorytmu s ( j) przy ( j1) s q d 2 s (0). z k j k j j =1,2,..,k, Cyfry dzielnika są dobierane w taki sposób, aby kolejna reszta była nieujemna.

Przykład. Stosując powyższy k=3 algorytm obliczyć iloraz 44:7. (1) (0) 2 (0) s s s (2) (3) s s s (1) (2) q 2 q q s z 44 d=7 q 1 1 (1) s 1 d 2 0 d 2 d 2 1 0 44 172 2 16 q 2 1 (2) s 16 172 2 q 0 0 Dzielenie binarne (8) s (3) 2 072 0 2