640 likes | 1.02k Views
Materiały laboratoryjne. Podstawy informatyki. Kodowanie i liczby. dr inż. Zbigniew Zakrzewski v.1.3. Pojęcie informatyki. Informatyka jest to nauka o przetwarzaniu informacji za pomocą automatycznych środków technicznych.
E N D
Materiały laboratoryjne Podstawy informatyki Kodowanie i liczby dr inż. Zbigniew Zakrzewski v.1.3
Pojęcie informatyki Informatyka jest to nauka o przetwarzaniu informacji za pomocą automatycznych środków technicznych. Informacja (w kontekście informatyki) jest wielkością abstrakcyjną, która może być przechowywana w pewnych obiektach, przesyłana pomiędzy obiektami, przetwarzana w pewnych obiektach i stosowana do sterowania pewnymi obiektami, przy czym przez obiekty rozumie się organizmy żywe, urządzenia techniczne oraz systemy takich obiektów.
Narzędzia informatyki Komputery Oprogramowanie Urządzenia elektroniczne realizujące proces przetwarzania informacji w postaci ciągu operacji arytmetyczno-logicznych
Oprogramowanie Algorytm – opis procesu przetwarzania informacji Program – zakodowany binarnie algorytm, który steruje pracą procesora System operacyjny – zbiór programów umożliwiających i ułatwiających eksploatację komputera
Podstawowe funkcje systemu operacyjnego Do podstawowych funkcji OS należą: uruchamianie programów i kontrola nad nimi sterowanie pracą i współdziałaniem urządzeń wchodzących w skład komputera Podstawowy podsystem komputera: BIOS – Basic Input/Output System – wbudowana część systemu operacyjnego określająca, co komputer może zrobić bez uruchamiania programów z dysku (FDD, HDD, CD, DVD, PenDrive i inne).
Rodzaje narzędzi (komputerów) Osobiste – stacjonarne i przenośne; Stacje robocze; Serwery; Superkomputery (Mainframe); Klastry komputerowe (typu Beowulf); Specjalizowane. Beowulf klaster 52 jednostki sprzężone w klastrach
Jednostka informacji: bit Podstawową jednostką informacji jest bit. Bit jest to podstawowa elementarna jednostka informacji wystarczająca do zakomunikowania jednego z co najwyżej dwóch jednakowo prawdopodobnych zdarzeń. Bit stanowi podstawę zapisu informacji w różnych typach pamięci komputera. Wszystkie inne jednostki stanowią różną wielokrotność bitów. Symbolicznie wartość bitu oznacza się jako „0” lub „1”Jest to oznaczenie stosowanew matematyce oraz przy opisie informacji przechowywanejw pamięci komputera i opisie sposobów kodowania informacji.
Systemy zapisu liczb Na ogół operujemy systemami pozycyjnymi, np. rzymski, dziesiętny. System pozycyjny oznacza, że wartość zapisywanego znaku zależy od jego miejsca, położenia „rzymski”= system pozycyjny sekwencyjny „dziesiętny” = system pozycyjny wagowy gdzie: m, nN; m ≤ n; N ≤ 2; a {0,....,N-1} N nazywamy podstawą systemu, zaś a jest elementem zbioru cyfr dostępnych w danym systemie W systemie dziesiętnym:N = 10, a {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
System dwójkowy System dwójkowy jestnaturalnym systemem informatyki. Jak zapisujemy informację? Za pomocą zjawisk elektrycznych, magnetycznych, świetlnych Zamiast skomplikowanych pomiarów które by pozwoliły zapisać 10 cyfr mamy proste i jednoznaczne kodowanie. Materiał półprzewodnikowy: gdy przyłożymy napięcie w jednymkierunku przewodzi prąd (prawie idealnie), a w kierunkuprzeciwnymnie przewodzi prądu. Mamy wiec dwa stany Podobnie jest w magnetyzmie: substancje magnetyczne możnanamagnesować w dwóch kierunkach Wadę systemy dwójkowego stanowi długość liczby, np.(0010001110100101)2 = 213 + 29 + 28 + 27 + 25 + 22 + 20 = (9125)10
Bity a Bajty Przyjęło się stosowanie jednostki liczącej 8 bitów,nazwanej bajtem Bajt to podstawowa komputerowa jednostka (porcja) informacji Dzisiaj mamy kilobajty, megabajty, gigabajty, terabajty,... Uwaga ! Nie jest zgodne z układem SI Jeden bajt może reprezentować 256 różnych wartości,które mogą oznaczać zapisywane wiadomości (zgodnie z regułą Hartleya)
Pojemność informacji Wyobrażenie pojemności informacji, wyrażonej w bajtach, jako wielkości abstrakcyjnej (nienamacalnej)
Kodowanie informacji Jak to się dzieje, że w pamięci komputera możnaprzechowywać teksty, obrazy, dźwięki i liczby znacznie różniące się od zestawu 0 – 256? Dzięki kodowaniu informacji ! Bez kodowania nie ma zapisu różnorodnych informacji wpamięci komputera. Kodowanie występuje w każdym programie i na każdym poziomie. Kodowanie multimediów (zamiana na informację) nazywamy kodowaniem źródłowym
Kodowanie liczb i znaków Liczby binarne 1011001 Liczby całkowite 89 Liczby dziesiętne 12,3 Liczby binarne ?????? Znaki alfanumeryczne CB Liczby binarne ?????? Jak przechowywać informacje o liczbach ułamkowych oraz różnorodnych znakach (literach, np. chińskich) ?
Komunikacyjny model Shannona • Kanał Shannona a prawo wartości informacji Hartleya: Wartość informacji wg Hartleya H = log = N – liczba stanów M – liczba wiadomości Szum addytywny Źródło informacji Nadajnik Kanał Odbiornik Punkt przeznaczenia Nadana wiadomość Nadany sygnał Odebrany sygnał Odebrana wiadomość
Kodowanie w systemie naturalnym NKD • Formuła naturalnego (pozycyjnego) kodu dziesiętnego:(arabskiego) 257810 Wartość Znaki alfabetu Wagi systemu Ogólny zapis
Zapis liczb nieujemnych w kodzie NKD • Formuły wiążące słowo kodowe z liczbami nieujemnymi: • Nieujemna liczba całkowitaL 0: • Nieujemna liczba ułamkowa 0 L < 1: Podstawa kodu Słowo kodowe Długość słowa Długość słowa
Zapis liczb nieujemnych w kodzie NKD c.d • Nieujemna liczba rzeczywistaL 0 : Maksymalna wartość liczby całkowitej Maksymalna wartość liczby ułamkowej Przykład: Przykład:
Kodowanie w systemie naturalnym NKB • Formuła naturalnego (pozycyjnego) kodu dwójkowego: 10112 Wartość Znaki alfabetu Wagi systemu Ogólny zapis
Liczba naturalna w kodzie dwójkowym Słowo n-bitowe: X = xn-1 ....... x1 x0 Słowo 8 bitowe: 10010011 Takie słowo reprezentuje liczbę z przedziału od 0 do 2n-1 Czyli dla n = 8 0 ÷ 255 na jednym bajcie Czyli dla n = 16 0 ÷ 65535 na dwóch bajtach Czyli dla n = 24 0 ÷ 16777216 na trzech bajtach Czyli dla n = 64 0 ÷ 1.8447x1019 na ośmiu bajtach
Zapis liczb nieujemnych w kodzie NKB • Formuły wiążące słowo kodowe z liczbami nieujemnymi: • Nieujemna liczba całkowitaL 0: • Nieujemna liczba ułamkowa 0 L < 1: Słowo kodowe Długość słowa Długość słowa
Zapis liczb nieujemnych w kodzie NKB c.d • Nieujemna liczba rzeczywistaL 0 : Maksymalna wartość liczby całkowitej Maksymalna wartość liczby ułamkowej Przykład: Przykład: Reprezentacja dziesiętna
Kody wspomagające kod NKB • Powody wprowadzenia kodów wspomagających: • Zbyt długie łańcuchy symboli NKB w ręcznym przetwarzaniu przez człowieka. • Możliwość popełnienia błędu w ręcznym zapisie NKB. Kody wspomagające - Kod ósemkowy (OCT) – r = 3 Kod szesnastkowy (HEX) – r = 4 W przypadku kodów o większej liczbie symboli niż 10, stosuje się oznaczenia literowe od „A” do litery dopełniającej zakres (w przypadku kodu szesnastkowego do litery „F”).
Reprezentacja liczb w kodach naturalnych • Tabela z wybranymi liczbami:
Konwersja kodów (dziesiętny dowolny) całkowite • Metodyka konwertowania dziesiętnych liczb całkowitych: • L – dziesiętna liczba całkowita, • B – liczba równoważna dziesiętnej o podstawie p. • Metoda iteracyjnego dzielenia przez podstawę p. Uniwersalny konwerter (NKD dowolny): System
6110 1 2 3 4 5 6 Konwersja kodów (dziesiętny dwójkowy) całkowite • Przykład konwersji NKD na NKB (dla liczb całkowitych): Wynik: 6110 = 1111012
Wielkości liczbowe Liczby naturalne:Jeden bajt 0, 1, ..., 255Dwa bajty ...,216 – 1 ( czyli około 6*104 ) Cztery bajty ...,232 – 1 ( czyli około 4*109 ) Liczby ujemne:kodowanie w systemie znak-modułUmawiamy się, że jeden bit z liczby oznacza jej znak (np. ósmy bit)Dla jednego bajta otrzymamy liczby(-127, 127) Ten zakres można rozszerzyć używając dwa bajty, cztery bajty, itd... Problem: niejednoznaczność definicji zera + 0 = 00000000 - 0 = 10000000
Liczby ujemne Kodowanie w systemie znak-moduł Kodowanie w systemie uzupełnieniowym Jeżeli kolejnym bitom przypiszemy wartości jak w tabeli to otrzymamy liczby z zakresu (–127,128). Nie ma podwójnej reprezentacjizera, ale przedział jest niesymetryczny. Ta asymetria jest wpisana w metodę, ponieważ w bajcie możemy zakodować 256 wartości. Odliczając ciąg znaków oznaczających zero zostaje nam różnych 255 wartości.
Liczby całkowite Liczby całkowite: kodowanie w systemie uzupełnieniowym Wszystkie otrzymane wartości są dokładne; Istnieje górne i dolne ograniczenie zakresu wartości liczb; Ograniczenia te zależą od tego, ile bajtów przeznaczymy na liczbę oraz od systemu kodowania znaku; Przy takim zapisie umawiamy się, że przecinek leży za prawym skrajnym znakiem Ten system kodowania nazywamy też systemem stałoprzecinkowym Otrzymujemy dla niego zawsze dokładne wartości
Konwersja kodów (dziesiętny dowolny) ułamkowe • Metodyka konwertowania dziesiętnych liczb ułamkowych: • L – dziesiętna liczba ułamkowa, • B – liczba równoważna dziesiętnej o podstawie p. • Metoda iteracyjnego mnożenia przez podstawę p. Koniec obliczeń dla dm = 0
1 2 3 4 5 6 Konwersja kodów (dziesiętny dwójkowy) ułamkowe • Przykład konwersji NKD na NKB (dla liczb ułamkowych): 0.2110 I tak dalej .... Stąd 0.2110 = (0.001101 ...)2
10112 Konwerter NKB NKD: Konwersja kodów (dwójkowy dziesiętny) całkowite • Metodyka konwertowania liczb całkowitych NKB na NKD: Przykład 1: Przykład 2: 110102
1110 0101 1101 01112 Konwersja kodów (dwójkowy HEX) całkowite • Metodyka konwertowania liczb całkowitych NKB na HEX: Przykład 1: Tetrady liczby szesnastkowej Wynik: 11100101110101112 = E5D716 Konwerter NKB HEX:
Uzupełnienia liczb • Każda liczba zapisana w kodzie naturalnym może być przedstawiona w odpowiednim kodzie uzupełnieniowym. • Dla każdego naturalnego kodu liczbowego o podstawie p istnieją dwa rodzaje uzupełnień: • uzupełnienie do podstawy p, oznaczane symbolem Up, • uzupełnienie do zmniejszonej podstawy p-1, oznaczane symbolem U(p-1). Dla liczb o podstawie p = 10 i p = 2 otrzymuje się odpowiednio uzupełnienia: U10, U9 i U2, U1.
Uzupełnienie U(p-1) w teorii • Formuła na uzupełnienie do zmniejszonej podstawy: • L – liczba nieujemna, • p – podstawa liczby, • n 0 – długość części całkowitej liczby, • m 0 – długość części ułamkowej liczby. Praktyczna reguła: Uzupełnienie U(p-1) liczby nieujemnej otrzymuje się przez odjęcie każdej cyfry tej liczby od (p-1)
Uzupełnienie U(p-1) w praktyce • Przykłady dla liczb dziesiętnych oraz dwójkowych: Dziesiętne: Dwójkowe: W przypadku liczb dwójkowych operacja uzupełnienia do 1 nosi nazwę dopełnienia i oznacza zastąpienie każdej jedynki przez zero i odwrotnie, czyli negację wszystkich bitów danej liczby.
Uzupełnienie Up w teorii • Formuła na uzupełnienie do podstawy: • L – liczba nieujemna, • p – podstawa liczby, • n 0 – długość części całkowitej liczby. Praktyczna reguła nr 1: Uzupełnienie Up liczby nieujemnej otrzymuje się przez dodanie jedynki na najmniej znaczącej pozycji jej uzupełnienia U(p-1). Praktyczna reguła nr 2: Uzupełnienie Up liczby nieujemnej otrzymuje się przez pozostawienie wszystkich mniej znaczących zer bez zmiany, odjęcie pierwszej niezerowej najmniej znaczącej cyfry od podstawy p, a następnie odjęcie pozostałych bardziej znaczących cyfr od zmniejszonej podstawy (p-1)
Uzupełnienie Up w praktyce • Przykłady dla liczb dziesiętnych oraz dwójkowych: Dziesiętne: W przypadku liczb dwójkowych (p = 2) uzupełnienia do 2 można otrzymać pozostawiając wszystkie mniej znaczące zera i pierwszą najmniej znaczącą jedynkę niezmienione, a następnie negując pozostałe bity. Dwójkowe:
Zapis liczb dwójkowych ze znakiem • W dwójkowym systemie liczbowym znaki „+” oraz „-” są • wprowadzane w postaci odrębnego bitu znaku, gdzie : • „1”- reprezentuje umownie znak „-”, • „0” – odpowiada znakowi „+”. • Stosuje się trzy zasadnicze sposoby kodowania liczb • dwójkowych ze znakiem: • Znak-Moduł (ZM). • Znak-Uzupełnienie do 1 (ZU1). • Znak-Uzupełnienie do 2 (ZU2). • Kody te stosuje się do liczb całkowitych i ułamkowych, czyli ogólnie biorąc liczb rzeczywistych.
Liczba ze znakiem w kodzie ZM • W kodzie ZM liczby dodatnie i ujemne o tych samych • wartościach bezwzględnych różnią się tylko bitem znaku. Całkowite: Ułamkowe: W praktyce układowej kropka jest pomijana, gdyż zwykle przyjmuje się, że dany zapis reprezentuje albo liczbę całkowitą albo liczbę ułamkową.
Liczba ze znakiem w kodzie ZU1 • W kodzie ZU1 reprezentacja: • liczby dodatniej jest taka sama jak w kodzie ZM, • liczby ujemnej jako bit znaku równy 1 oraz uzupełnienie jej modułu do 1. Całkowite: Ułamkowe: Kody ZM i ZU1 wprowadzają pewną anomalię – dwie różne liczy reprezentują zero. Te dwa zera określa się umownie jako „dodatnie” i „ujemne” zero.
Liczba ze znakiem w kodzie ZU2 • W kodzie ZU2 reprezentacja: • liczby dodatniej jest taka sama jak w kodzie ZM oraz ZU1, • liczby ujemnej jako bit znaku równy 1 oraz uzupełnienie jej modułu do 2. Całkowite: Ułamkowe: W przypadku kodu ZU2 – zero jest zapisane jednoznacznie bez względu na ustawienia bitu znaku.
Przykłady liczb ze znakiem w kodach • Tabela z czterobitowymi liczbami ze znakiem w kodach:
Kody dwójkowo-dziesiętne BCD w teorii • Cechy kodu BCD (Binary-Coded-Decimal): • Każda cyfra dziesiętna jest oddzielnie kodowana dwójkowo w postaci odpowiedniego słowa. • Cała liczba dziesiętna jest kodowana dwójkowo przez złożenie słów dwójkowych, reprezentujących wszystkie cyfry tej liczby. • Do zapisu cyfr potrzebne są co najmniej 4-bitowe słowa. • Wszystkie kody BCD są kodami nadmiarowymi (24 = 16). • Możliwości kombinacyjne 4-bitowych słów kodowych jako kodów BCD:
628310 628310 Kody BCD w praktyce • Przykład kodowania w kodzie „8421”: • Przykład kodowania w kodzie „2421”: Wynik Praktyczna reguła: Pierwsze 5 cyfr kodowane jak w „8421”, pozostałe 5 zanegowane odpowiedniki dopełnień do 9. Wynik Kody „samouzupełniające” – uzupełnienie do 1 liczb dwójkowych daje uzupełnienie do 9 odpowiednich liczb dziesiętnych.
Zestawienie kodów BCD • Tabela z wykazem kodów dwójkowo-dziesiętnych BCD:
Reprezentacja stałoprzecinkowa • Wady reprezentacji stałoprzecinkowej (Fixed Point Notation): • 10-cyfrowy format: XXXXX.XXXXX W przypadku liczb stałoprzecinkowych wystąpi duży błąd przy bardzo małych wartościach oraz bardzo dużych wartościach (w odniesieniu do powyższego formatu).
Liczby rzeczywiste Charakterystyka: Liczby rzeczywiste mają cześć całkowitą i ułamkową Nie można już przyjąć, że przecinek leży po prawej stronie (bo wtedy byśmy mieli tylko liczby całkowite) ani, że leży po lewej stronie (bo wtedy byśmy mieli tylko liczby ułamkowe) Niezbyt „ekonomiczne” byłoby używanie kodowania w systemie stałoprzecinkowym (np. przecinek rozdziela dwa bajty) Co chcemy tak naprawdę uzyskać? System kodowania dla którego błąd względny będzie tego samego rzędu dla wszystkich wartości biorących udział w obliczeniach.
Skalowanie liczby • Dostosowywanie skali liczby ułamkowej: i tak dalej ... Możliwość wykonania działania z zastosowaniem wszystkich cyfr znaczących. Wynik jednak musi być dodatkowo pomnożony przez wykładniczy współczynnik korygujący.
System zmiennoprzecinkowy Metoda: Kodowanie w systemie zmiennoprzecinkowym zwanym też cecha-mantysa umożliwia zapis liczb rzeczywistych z ustalonym błędem względnym system oparty na podziale liczby na cześć ułamkową zwaną mantysą oraz na wykładnik potęgi podstawy systemu zwany cechą opracowany na podstawie zapisu liczby w systemie pozycyjnym wagowym
Reprezentacja zmiennoprzecinkowa • Zmiennoprzecinkowa (Floating Point Notation) reprezentacja liczby dziesiętnej: • M – mantysa, liczba ułamkowa ze znakiem, przedstawiona w jednym z trzech kodów ZM, ZU1, ZU2, • W – wykładnik lub cecha, liczba całkowita ze znakiem przedstawiona również w jednym z trzech kodów (nie koniecznie tym samym co M), • p – wspólna podstawa kodów zastosowanych do zapisu słów M i W, • d – liczba naturalna (zwykle równa 1).