250 likes | 519 Views
Dane. Architektura Systemów Komputerowych. mgr inż. Michał Misiak. Rodzaje danych. Wartości logiczne Znaki tekstowe Liczby Całkowite: nieujemne i ze znakiem Niecałkowiete: stało- i zmiennopozycyjne Dźwięki Obrazy. Reprezentacja danych.
E N D
Dane Architektura Systemów Komputerowych mgr inż. Michał Misiak
Rodzaje danych • Wartości logiczne • Znaki tekstowe • Liczby • Całkowite: nieujemne i ze znakiem • Niecałkowiete: stało- i zmiennopozycyjne • Dźwięki • Obrazy
Reprezentacja danych • Komputer operuje na liczbach binarnych, które złożone są z cyfr 0,1 • Liczby binarne określone są jako słowo binarne i są przeważnie postaci 8x2n (np. 8, 16, 32, 64) • Dane, które nie są liczbami (obrazy oraz dźwięki) muszą być zapisane z wykorzystaniem słów binarnych
Znaki alfanumeryczne • Znaki tekstowe kodowane są jako liczby, zgodnie z tzw. tablicą kodową • Używane kody: • ASCII (American Standard Code for Information Interchange) • 128 pozycji w tym małe i wielkie litery alfabetu łacińskiego • Rozszerzenia ASCII do 256: • pierwsze 128 jest to ASCII kolejne zawierają symbole narodowe lub inne • Pojawia się problem niejednoznaczności kodów dla różnych języków • Kody EBCDIC (Extended Binary Coded Decimal Interchange Code) – wykorzystywany na komputerach typu mainframe IBM, • UNICODE – początkowo 216, aktualnie 232. Reprezentacja praktycznie wszystkich znaków używanych na świecie.
ASCII • Zaproponowany przez ANSI na bazie kodu dla urządzeń dalekopisowych • Początkowo 7 bitowy, 8 bit wykorzystywany był jako suma kontrolna • 128 pozycji w tym 33 znaki białe oraz 95 znaków widocznych • Znaki białe: spacja, kody formatujące, kody sterujące transmisją i urządzeniami • Znaki widoczne: cyfry oraz małe i duże litery, znaki interpunkcyjne oraz podstawowe znaki mateamtyczne
ASCII (2) • Kody sterujące: • Pozycje od 0 – 31 • Np. CR: 13, (tzw. karetka) – powrót na początek wiersza, LF-10 – przejście do następnego wiersza, etc … • Spacja: 32 • Cyfry 0-9: od 48 do 57 • Znaki pisarskie: • Małe litery: 97 – 122 • Duże litery: 65 – 90 • Odstęp pomiędzy dużymi i małymi wynosi: 32 • Kod specjalny 127 – kasowanie znaku
Kod rozszerzony ASCII • Reprezentacja tablicy kodów 8 bitowa – 256 znaków • Pierwsze 128 znaków identyczne z ASCII • Pozostałe znaki dostosowane do alfabetów regionalnych tj. słowiańskie, cyrylica, etc… • Problemem jest różnorodność tablic kodowych: • ISO8859 – alfabety słowiańskie, kilkanaście tablic (Polskie znaki: 8859-2) • Microsoft – oznaczenia 4 znakowe np. 1250
Reprezentacja danych związanych z obrazem i dźwiękiem • Obraz i dźwięk muszą być również kodowane jako liczby • Dźwięk – proces przekształcania do postaci cyfrowej: kwantowanie (wartość amplitudy napięcia), próbkowanie (częstotliwość pobierania próbki) i kodowanie (przypisanie kodu) • Obraz – macierz pikseli. Każdy piksel ma określony kolor oraz współrzędne. Kolor reprezentowany w postaci 3 liczb (czerwony, niebieski oraz zielony RGB). Dodatkowa informacja o jasności.
Jednostki informacji • Bit (Binary digIT), • skrót „b” z modyfikatorem wielkości np. Kb, Mb, Gb. • Problem z przeliczaniem (przedrostki w SI są dziesiętne) • Reprezentuje wartość logiczną Prawda/Fałsz • Bajt (byte) – 8 bitów. Jednostka adresacji pamięci. Bajt określany jest jako OCTET • Słowo (word) – wielkość informacji, na której pracuje komputer. Słowo 8 bitowe, 16 bitowe, etc… • Słowo procesora – porcja danych naturalna dla danego procesora, tzn. długość odpowiada długości posiadanych rejestrów: np. 16 bitów, 32 bity, 64 bit.
Zapis danych • Wartości logiczne • Liczby całkowite nieujemne • Liczby całkowite ze znakiem • Zapis stałopozycyjny • Zapis zmiennopozycyjny • Formaty dla obrazu, dzwięku
Zapis danych boolowskich • Do reprezentacji wartości logicznej wystarczy jeden bit. • W komputerach podstawową jednostką jest słowo. Dane bitowe reprezentowane są jako wzorzec bitów zapełniający całe słowo • Różne reprezentacje wartości logicznych zależnych od systemów operacyjnych oraz języków programowania: • Fałsz – raczej standardowo reprezentowany przez 0 • Prawda: np. w C reprezentowana przez 1, w C jako argument może być reprezentowana przez dowolną wartość różną od 0, a w VB przez jedynki „1”
Liczby całkowite nieujemne • Naturalny kod binarny (NKB) – ciąg ponumerowanych bitów od lewej do prawej o długości równej słowu • Kod BCD – wykorzystywany do reprezentacji liczb dziesiętnych stałopozycyjnych. • Wersja spakowana: 2 cyfry w bajcie • Wersja niespakowana (ASCII) jedna cyfra w bajcie Źródło: http://pl.wikipedia.org/wiki/Grafika:Binary_clock_samui_moon.jpg
Zapis liczb całkowitych ze znakiem • Kod U2 – kod uzupełnień do dwóch • Kod U1 – kod uzupełnień do jednego • Znak-Moduł • Reprezentacja spolaryzowana (biased)
Własności kodów • Reprezentacja zera: dwie możliwość w kodach znak-moduł, U1 • Symetryczność zakresu liczbowego • Reprezentacja znaku liczby oraz zmiana znaku: • U1 – negacja bitowa • U2 – negacja i inkrementacja • znak-moduł – negacja bitu znaku • Dodawanie i odejmowanie w U2 wykonywane tak samo jak w NKB
Reprezentacja stałopozycyjna • Wykorzystywany do reprezentacji liczb ułamkowych i mieszanych • Liczba reprezentowana jest przez dwie części: • pierwsza tak jak w U2/NKB reprezentuje część całkowitą • druga reprezentuje część ułamkową (2-1) • Spotykane formaty: • 1 lub 2 bity należą do części całkowitej pozostałe do ułamkowej • Po połowie słowa na część całk. i ułamkową • Operacje wykonywane podobnie jak na liczbach całkowitych. Za ostateczną reprezentację odpowiedzialny jest programista
Zapis zmiennopozycyjny (1) • Umożliwia zapis liczb całkowitych i ułamkowych o dużym zakresie dynamiki wartości • Zapis zmiennopozycyjny dziesiętny. Wiele możliwości: np. 1,234x102, 123,4x100, 12,34x101 • Budowa zapisu: • Znak liczby • Część znacząca • Wykładnik • Postać znormalizowana: część całkowita wyraża się pojedynczą liczbą różną od 0.
Binarny zapis zmiennopozycyjny • Znormalizowany zapis określony w IEEE754 • Liczba powinna zostać zapisana w postaci znormalizowanej, wówczas cześć całkowita w każdym przypadku (oprócz 0) jest równa 1. • Wykładnik jest zapisywany w kodzie z polaryzowanym. Dwie wartości pola wykładnika są zarezerwowane i mówią, że zapis nie reprezentuje postaci znormalizowanej • 00…00 – postać nieznormalizowana • 11…11 – nie liczba • Znak liczby – pojedynczy bit (0 – liczba nieujemna 1 – liczba niedodania) • Pole mantysy – zawiera cześć ułamkową
Opis poszczególnych pól zapisu zmiennopozycyjnego z exp – pole wykładnika m – pole mantysy
Arytmetyka na liczbach zmiennopozycyjnych • Wartości zapisane w postaci zmiennopozycyjnej oraz operacje arytmetyczne wykonywane na nich są przybliżone • Dokładność wyniku może być uzależniona od kolejności wykonywania działań • Dodawanie/odejmowanie liczb należy wykonywać w kolejności rosnącej • Jeśli wartość bezwzględna liczby a jest znaczenie mniejsza od b to w wyniku otrzymujemy liczbę b • Z powodu przybliżonych wyników obliczeń nie należy korzystać z relacji równości.
Organizacja pamięci w komputerach • Podstawowa jednostka adresowalna ma rozmiar 1 bajtu • Dane większe niż 1 bajt są przechowywane w kolejnych komórkach pod kilkoma kolejnymi adresami • Fizyczna organizacja pamięci odbiega od logicznej. Komórki pamięci są dwukrotnie większe niż słowo, co umożliwia przesłanie podwójnej porcji danych przy tym samym czasie dostępu
Adresowanie danych • Little Endian – najmniejszy bajt pod najmniej znaczącym adresem • Big Endian – najbardziej znaczący bit pod najmniejszym adresem
Little & Big Endian A (MSB) B C D (LSB) Litlle Endian Big Endian Addr+0 D Addr+0 A Addr+1 C Addr+1 B Addr+2 B C Addr+2 Addr+3 A D Addr+3
Litlle Endian • Adres bajtu odzwierciedla wagę bajtu w liczbie • Naturalna dla komputera, dziwna dla człowieka • Dostęp do mniej znaczących części liczby całkowitej zapisanej w długim formacie spowoduje, że adres zmiennej będzie ten sam. Wygodne w częstym rzutowaniu typów całkowitych • 32-bit zawartość 4A 00 00 00 może być czytana z tym samym adresem jako 8-bit (wartość = 4A), 16-bit (004A), lub 32-bit (0000004A) • Procesory, które używają formy little endian, to między innymi Intel x86, AMD64, DEC VAX
Big Endian • Naturalny dla człowieka mniej wygodny przy obliczeniach • Dostęp do danej całkowitoliczbowej wymaga zmiany wartości adresu w zależności od długości danej. • Duża efektywność porównywania łańcuchów znakowych. Porównywanie może zostać przeprowadzone po długości słowa, a nie koniecznie bajt po bajcie. • Procesory, które używają formy big endian, to między innymi SPARC, Motorola 68000, PowerPC 970, IBM System/360, Siemens SIMATIC S7
Dziękuje! Zapraszam na kolejne wykłady ;)