Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Architektura systemów komputerowych (zima 2013) Wykład 1 (cz. 2) Reprezentacja danych w komputerze dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych.

Podobne prezentacje


Prezentacja na temat: "Architektura systemów komputerowych (zima 2013) Wykład 1 (cz. 2) Reprezentacja danych w komputerze dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych."— Zapis prezentacji:

1 Architektura systemów komputerowych (zima 2013) Wykład 1 (cz. 2) Reprezentacja danych w komputerze dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki

2 Kodowanie 2 Kodowanie informacji jest to przedstawienie informacji w postaci komunikatu zrozumiałego przez odbiorcę. Kodowanie binarne każdemu elementowi alfabetu przyporządkowuje ciąg binarny (np. a -> 0001, b -> 0010, itd. ) Inaczej K(a)=0001, K(b)=0010, gdzie K to kod. Słowo kodowe Jeś li K(a)=0001, to 0001 jest słowem kodowym a. Do kodowania używamy określonego zbioru, np. cyfr, znaków, impulsów.

3 Idea działania układów cyfrowych 3 W układach cyfrowych wszelka informacja i wszelkie wielkości przetwarzane przez te układy reprezentowane są przez dwa stany. stan niski (L), nazywany też poziomem logicznym niskim lub zerem (0) stan wysoki (H), nazywany też poziomem logicznym wysokim lub jedynką (1) W praktycznej realizacji układów cyfrowych należy określić jakie wartości lub zakresy wartości oznaczają poziom logiczny niski lub wysoki bit – podstawowa, najmniejsza i niepodzielna jednostka informacji cyfrowej, jaka może być przetwarzana przez komputer bit może przechowywać informację o jednym z dwóch możliwych stanów – przyjmuje wartości oznaczane jako 0 albo 1 bit to skrót terminu binary digit. bit to po angielsku kawałek – skrót: b

4 Działanie układu cyfrowego 4 Klucz może być realizowany przez tranzystor

5 Algebra Boola 5

6 Podstawowe bramki logiczne 6

7 Proste kombinacje bramek 7 Realizujemy jako lub Realizujemy jako Bardziej złożone bramki to półsumator, sumator, multiplekser – przy okazji dodawania

8 Własności algebry Boola 8

9 Upraszczanie układu kombinacyjnego 9 x = ¬ (¬(a ¬b) ¬b) Prawo de Morgana x =¬ ¬ ((a ¬b) ¬¬b) Podwójna negacja x = (a ¬b) b x = (a b)^(¬b b) Rozdzielność x = (a b) ^ 1 x = a b

10 Dlaczego komputery przetwarzają bity? 10 Bity są odporne na zakłócenia - w czasie przekazu należy wykryć tylko dwa poziomy, wysoki H - 1 i niski L - 0. Brak wartości pośrednich. W przypadku innych jednostek sygnał musi mieć więcej poziomów, a więc jest bardziej podatny na przekłamania w trakcie transmisji. Binarny system pozycyjny da się bezpośrednio zakodować w postaci bito w - każdej cyfrze binarnej odpowiada jeden bit (na bitach można wykonywać dowolne operacje arytmetyczne, a więc liczyć )

11 Nazewnictwo 11 Osiem bitów tworzy tzw. oktet zwany również bajtem (B) 1 bit: 0, 1, rozróżnia 2 znaki 2 bity: 00, 01, 10, 11, rozróżniają 4 znaki. 3 bity: 000, 001, 010, 011, 100, 101, 110, 111, rozróżniają 8 znaków. 4 bity: , rozróżniają 16 znaków (tetrada) 8 bitów pozwala odróżnić 2 8 = 16 x 16 = 256 znaków Cztery bity to tetrada (kęs) ang. nibble Dwa bajty to półsłowo. Cztery bajty (32 bity) to słowo. 64 bity to podwójne słowo. Słowo komputerowe to ilość informacji przetwarzanej przez procesor jako całość.

12 Jednostki informacji 12 W informatyce nazwy przedrostków nie odpowiadają tym w układzie SI kilo = 1000= 10 3 mega = = 10 6 = kilo x 1000 giga = = 10 9 = mega x 1000 tera = = = giga x =1024=1Kkilobajt, typowa strona tekstu to kilka KB; 2 20 =1024K=1Mmegabajt, książka bez grafiki lub minuta muzyki; 2 30 =1024M=1Ggigabajt, film cyfrowy, sporo grafiki, ludzki genom; 2 40 =1024G=1Tterabajt, duża biblioteka, szerokoekranowy film w kinie; 2 50 =1024T=1Ppetabajt, ludzka pamięć;

13 System liczbowy 13 Przykład cyfry rzymskie Jeśli "X"=10,"V"=5,"I"=1 to XVI = = 16 Jest to zbiór reguł do jednolitego zapisywania i nazywania cyfr. Rozróżniamy systemy addytywne i pozycyjne Systemy addytywne Posiadają osobne symbole dla pierwszych kilku małych liczb, a następnie posiadają kolejne symbole dla ich wielokrotności. W systemach tych liczby tworzy się przez "dodawanie kolejnych symboli i stąd ich nazwa System pozycyjny to taki, w którym znaczenie znaków zależy od ich pozycji. System wagowy to taki, w którym dla każdej pozycji cyfry przypisana jest inna waga. W systemie pozycyjno-wagowym liczbę przedstawia się jako ciąg cyfr, przy czym wartość tej liczby zależy zarówno od cyfr jak i miejsca, na którym znajdują się one w tym ciągu Przykład Liczba 5004 w dziesiętnym systemie liczbowym, w którym podstawą pozycji jest 10 wyliczamy 5 x x x x 10 0

14 System liczbowy pozycyjno-wagowy 14 Liczbę całkowitą L w systemie pozycyjnym o podstawie (bazie) r zapisujemy w postaci: Unikalną reprezentacją liczby o wartości L jest zbiór cyfr takich, że P - podstawa systemu a – kolejne cyfry w liczbie i – indeks kolejnych cyfr System dziesiętny Podstawę systemu dziesiętnego tworzy liczba 10. Przykład 126(10) = 1x x x100 System dwójkowy (binarny) Podstawę systemu binarnego tworzy liczba 2. Zapis liczby tworzymy za pomocą cyfr o przypisanych wartościach 0 i 1. Przykład 1010(2) = 1x23 + 0x22 + 1x21+ 0x20 = = 10(10) Zapis liczby tworzymy za pomocą cyfr o przypisanych wartościach od 0 do 9.

15 Kod binarny prosty 15 Kodem danego zbioru symboli nazywa się przyporządkowanie każdemu symbolowi tego zbioru jednego i tylko jednego wektora cyfrowej reprezentacji. Jeżeli jest to przyporządkowanie wzajemnie jednoznaczne to kod nazywamy szyfrem. Kod binarny prosty to pozycyjny system liczbowy, w którym podstawą pozycji są kolejne potęgi liczby 2. Do zapisu liczb potrzebne są tylko dwa znaki: 0 i 1. Powszechnie używany w informatyce. Jak w każdym pozycyjnym systemie liczbowym, liczby zapisuje się tu jako ciąg cyfr, z których każda jest mnożnikiem kolejnej potęgi liczby stanowiącej podstawę systemu. Przyporządkowuje dziesiętnym liczbom całkowitym bez znaku n-bitowe liczby dwójkowe. Gdzie przy czym: Zakres wartości: n2n2n

16 Konwersja z systemu dziesiętnego na system dwójkowy 16 Zapis liczby 172 (10) w systemie dwójkowym: (dzielimy na dwa i zapisujemy resztę) Najmniej znaczący bit 2 0 Najbardziej znaczący bit 2 n Realizacja algorytmiczna w - wartość liczby w systemie dziesiętnym p - podstawa nowego systemu pozycyjnego c i - cyfra na i-tej pozycji w systemie pozycyjnym o podstawie p 1. i := 0 2. c i = w mod p 3. w := w div p 4. jeśli w == 0 to koniec 5. inc(i) 6. goto 2 7. koniec

17 Dodawanie liczb binarnych 17 Do wykonywania dodawania niezbędna jest znajomość tabliczki dodawania, czyli wyników sumowania każdej cyfry z każdą inną: = = = = = 5 (10) = 6 (10) 1011 =11 (10) 1100 =12 (10) = 3 (10) 1111 =15 (10) 1010 = 10 (10) = 10 (10) = 20 (10) 1111 =15 (10) = 1 (10) =16 (10) Problem W pamięci komputera liczby binarne przechowywane są w postaci ustalonej ilości bitów (np. 8, 16, 32 bity). Jeśli wynik sumowania np. liczb 8 bitowych jest większy niż 8 bitów, to najstarszy bit (dziewiąty) zostanie utracony. Sytuacja taka nazywa się nadmiarem (ang. overflow)

18 Sprzętowa realizacja dodawania 18 Półsumator (Half-Adder) Tablica prawdy Sumator (full-adder)

19 Odejmowanie liczb binarnych 19 Przy odejmowaniu korzystamy z tabliczki odejmowania: = = 1 i pożyczka z następnej pozycji = = 0 Pożyczka oznacza konieczność odjęcia 1 od wyniku odejmowania cyfr w następnej kolumnie = 110 (10) = 15 (10) = 95 (10) problem Jeśli od liczby mniejszej odejmiemy większą, to wynik będzie ujemny Otrzymujemy same jedynki, a pożyczka nigdy nie zanika. Sytuacja taka nazywa się niedomiarem (ang. underflow)

20 Inne kody liczbowe 20 Ósemkowy system liczbowy inaczej oktalny to pozycyjny system liczbowy o podstawie 8. Do zapisu liczb używa się w nim ośmiu cyfr, od 0 do 7. Przykład: 1x x x8 0 = = 100. Zatem 144 (8) = 100 (10). Szesnastkowy system liczbowy, hexadecymalny. Poza cyframi dziesiętnymi od 0 do 9 używa się pierwszych sześciu liter alfabetu łacińskiego: A, B, C, D, E, F. Przykład liczba zapisana w dziesiętnym systemie liczbowym jako 1000, w kodzie szesnastkowym przybiera postać 3E8, gdyż: 3x x x16 0 = = Hex jest powszechnie używany w informatyce, ponieważ wartość pojedynczego bajtu można opisać używając tylko dwóch cyfr szesnastkowych. W ten sposób można kolejne bajty łatwo przedstawić w postaci ciągu liczb hex. Jednocześnie zapis 4 bitów można łatwo przełożyć na jedną cyfrę hex.

21 Inne kody liczbowe 21 Kod dwójkowo-dziesiętny (BCD – ang. Binary-Coded Decimal) – przyporządkowuje cyfrom od 0 do 9 czterobitowe ciągi Zastosowanie: tam, gdzie ważna jest prostota, np. kalkulator. Zalety: łatwość konwersji (przekształcanie z postaci znakowej w postać obliczeniową i odwrotnie). Kod BCD spakowany – można przedstawić liczby z zakresu (0..99). 2-cyfrowa liczba dziesiętna bez znaku ma postać 8-bitowego ciągu. Wady kodu: mało efektywne wykorzystanie pamięci, złożoność realizacji operacji arytmetycznych (wymagana korekcja wyniku).

22 Operacje w BCD 22 Dodawanie w BCD Dodawanie w BCD realizujemy poprzez wykonanie binarnego dodawania a następnie poprzez konwersję wyniku z powrotem do BCD. Konwersja polega na dodaniu do wyniku 6 wówczas, gdy jest on większy niż 9. Przykład: = = = 17 = 1 1 W BCD nie istnieje wartość większa niż 9 (1001) dla jednego kęsu. Korekta polega na dodaniu 6 (0110) do obliczonej sumy: = = 1 7 Otrzymujemy dwa kęsy 0001 oraz 0111,odpowiadające cyfrom "1" i "7".

23 Kodowanie dwójkowe liczb całkowitych ze znakiem 23 ZNAK-MODUŁ – polega na przeznaczeniu najstarszego bitu (MSB) na znak, reszta reprezentuje moduł liczby. Obliczenia są niewygodne, odejmowanie różni się od dodawania (dodawanie nie działa na liczbach ze znakiem). Dodatkowo występuje podwójna reprezentacja zera. ZAPIS BINARNY PRZESUNIĘTY. Aby otrzymać reprezentowaną wartość, odejmuje się od niej połowę największej liczby. Zaleta – kody liczb od najmniejszej ujemnej do największej dodatniej tworzą zwykły binarny ciąg arytmetyczny, opowiadający trybowi pracy liczników dwójkowych. ZAPIS Z UZUPEŁNIENIEM DO DWÓCH – liczby dodatnie są reprezentowane przez zwykłe liczy binarne bez znaku. Liczbę ujemną reprezentuje liczba binarna którą trzeba dodać do liczby dodatniej (0 zastępujemy przez 1, 1 zastępujmy przez 0), co jest nazywane uzupełnieniem do jedynki, a następnie należy postąpić zgodnie z uzupełnieniem do 2, czyli do liczby w kodzie U1 dodajemy +1. Najstarszy bit liczby ujemnej w kodzie U2 jest 1.

24 Kod U1 24 Uzupełnienie do -1 Jest to uzupełnienie n-cyfrowej liczby N o podstawie do -1. Jest zdefiniowane jako ( n – 1) - N Przykład: Uzupełnieniem liczby (53412) 10 jest ( n – 1) – N = (10 5 – 1) – = Uzupełnieniem liczby ( ) 2 jest ( n – 1) – N = (2 7 ) 10 – 1 – ( ) 2 = ( ) 10 = (42) 10 = ( ) U1 = ( ) U1 Uzupełnienie liczby binarnej do 1 otrzymujemy poprzez odjęcie każdej jej cyfry od 1 lub inaczej mówiąc – zanegowanie danej cyfry. Np. uzupełnieniem do 1 liczby ( ) 2 jest liczba ( ) U1 = ( ) U1

25 Kod U2 25 Uzupełnienie do n-cyfrowej liczby N., jest zdefiniowane jako Przykład: Dla = 2 uzupełnienie do dwu jest równe (n-bitowa liczba) U1 +1 n - N ( n – 1) – N = (( n – 1) – N) + 1 ( ) 2 uzupełnienie do 1: ( n – 1) – N = ( ) U1 uzupełnienie do 2 ( n – N) = (( n – 1) – N) + 1 = U1+1 = ( ) U1 +1 = ( ) U2

26 Przykłady liczb całkowitych ze znakiem 26 Liczba całkowitaZnak – modułBinarny przesunięty U (0)1000--

27 Operacje arytmetyczne w U2 27 Aby dodać dwie liczby: M=+5, N=-2, dodajemy je bit po bicie z przeniesieniem w sposób następujący = +5 ( ) 2 = 2 ( ) U1 = ( ) U2 = = +3, C = 1 Aby wykonać odejmowanie 2-5, należy wziąć U2 liczby 5 i dodać do 2: = +2 ( ) 2 = 5 ( ) U1 = ( ) U2 = = -3, C = 0

28 Przesunięcie i rotacja 28 SHL (shift left) ROL (rotate left) SHR (shift right) ASR (arithmentic shift right)

29 Mnożenie i dzielenie przez 2 29 Mnożenie i dzielenie dobrze działa w zapisie U2. W tym formacie operacje wykonuje się w sposób naturalny. Mnożenie przez 2 jest równoważne arytmetycznemu przesunięciu w lewo o jeden bit. Na najmniej znaczącej pozycji wstawiamy 0. W razie przekroczenia zakresu może pojawić się nadmiar. (2) 10 = (0010) U2 * 2 = (0100) U2 = (4) 10 (-2) 10 = (1110) U2 * 2 = (1100) U2 = (-4) 10 Jeżeli w wyniku przesunięcia znak liczby (najbardziej znaczący bit) nie ulegnie zmianie, to przesunięcie w lewo poprawnie realizuje mnożenie przez 2. (-6) 10 = (1010) U2 * 2 = (0100) U2 = (4) 10 ?? Wystąpił nadmiar i wynik jest błędny. Wynika to z faktu, że zwiększyliśmy wartość liczby tak bardzo, że przekroczyła ona zakres liczb możliwych do wyrażenia w danym słowie. Weźmy dłuższe słowo: (-6) 10 = (11010) U2 * 2 = (10100) U2 = (-12) 10 OK.!

30 Dzielenie przez 2 30 Dzielenie przez 2 wykonujemy przy użyciu arytmetycznego przesunięcia w prawo. Polega ono na powieleniu najstarszego bitu. Operacja ta jest zawsze możliwa do wykonania – nie powoduje błędów. (6) 10 = (0110) U2 : 2 = (0011) U2 = (3) 10 (-6) 10 = (1010) U2 : 2 = (1101) U2 = (-3) 10 Dzieląc liczbę ujemną musimy na najstarszym bicie dopisać jedynkę a nie zero – stąd nie korzystamy z SHR Uwaga – przy przesuwaniu w prawo może nastąpić utrata dokładności. (7) 10 = (0111) U2 : 2 = (0011) U2 = (3) 10

31 Formaty liczb całkowitych w procesorze 31 Liczby całkowite ze znakiem są zawsze zapisywane w kodzie U2. Używa się do tego celu 8, 16, 32 lub 64 bitów. Zawsze najbardziej znaczący bit jest używany do określenia znaku. Liczba bajtów Zakres dolny Zakres górny Nazwa typuZakres bez znaku Nazwa typu char byte, unsigned char short word,unsigned short Int, integer dword, unsigned int long int qword, unsigned long


Pobierz ppt "Architektura systemów komputerowych (zima 2013) Wykład 1 (cz. 2) Reprezentacja danych w komputerze dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych."

Podobne prezentacje


Reklamy Google