Technologie informacyjne – Wykład IV-VI
Transkrypt
Technologie informacyjne – Wykład IV-VI
Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI A. Matuszak 8 marca 2013 A. Matuszak Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Wykład IV Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery Wykład V Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Wykład VI Porządek danych Liczby całkowite Liczby rzeczywiste A. Matuszak 1 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery Maszyna Turinga I taśma zwiera p symboli (pamięć) I maszyna może być w jednym q stanów (procesor) A. Matuszak (3) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery Rozkazy procesora I I I I Każdy procesor posiada listę rozkazów, które jest w stanie wykonać. bitowo 00000001 Każdy rozkaz jest zakodowany jako 00000010 00000011 ciąg bitów. 00000100 Dla różnych procesorów taki sam 00000101 rozkaz (np. ADD) może mieć inną 00000111 sekwencję bitów. Nieprzenośność! 00001000 Rozkazy są nieodróżnialne od 00001001 danych! A. Matuszak (4) 2 kod ADD MUL SUB DIV JMP LOA CMP NOP Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery Program Program (dokładnie: plik z obrazem programu) to sekwencja bitów zawierająca zarówno kody rozkazów jak i dane. I model von Neumanna – rozkazy i dane przeplatają się, ryzyko pomyłki lub celowego działania (wirusy) I model harvardzki – dwa osobne ciągi, jeden z rozkazami drugi z danymi, podwójna szyna danych A. Matuszak (5) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery Assembler I można „ręcznie” napisać program w postaci binarnej I zamiast żmudnie zapisywać kody rozkazów (np. 32 bitowe) przyjęło się stosować zapis symboliczny nazw poszczególnych rozkazów, np. ADD, MUL, DIV, JMP I tak zapisany program nazywa się programem w języku Assemblera I specjalny program (także zwany assemblerem) tłumaczy zapis symboliczny na plik z obrazem programu wykonywalnego A. Matuszak (6) 3 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery Programowanie w assemblerze Język assemblera jest zależny od procesora i bardzo żmudny w użyciu (chociaż bardzo wydajny), jest też bardzo nienaturalny dla człowieka I mikrokontroler I krytyczne fragmenty programu (np. BLAS) A. Matuszak (7) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery Języki wysokiego poziomu I następnym krokiem było wymyślenie języka łatwiejszego dla człowieka i niezależnego od typu procesora: języka wysokiego poziomu I język wysokiego poziomu zawiera kilka podstawowych (abstrakcyjnych) instrukcji I język wysokiego poziomu wymaga specjalnego programu: kompilatora, który przetłumaczy jego instrukcje na assembler I kompilator musi być inny dla każdego hardware’u (typu procesora) A. Matuszak (8) 4 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery Języki wysokiego poziomu Istnieją różne języki wysokiego poziomu, ogólne, jak i specyficzne do danego zagadnienia. I Jednym z pierwszych języków był Fortran (FORmula TRANslator) szczególnie wygodny przy obliczeniach matematyczno-inżynierskich I Jednym z najpopularniejszych języków jest język C I Językiem tradycyjnie używanym do nauki programowania jest Pascal A. Matuszak (9) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery Kompilacja 1. translacja – zamiana kodu źródłowego programu na assembler 2. asemblacja – zamiana assemblera na program lub częściej na tzw. półkompilat (.o, .obj) 3. konsolidacja – (ang. linkowanie) łączenie wszystkich półkompilatów oraz dołączanie bibliotek, w wyniku dostajemy program. A. Matuszak (10) 5 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery Interpreter Interpreter przetwarza instrukcje jedna po drugiej i natychmiast wykonuje. A. Matuszak (11) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery Instrukcje języka wysokiego poziomu I I instrukcja przypisania I I instrukcje sterujące A. Matuszak (12) 6 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery Zmienna Zmienna to symboliczna nazwa komórki pamięci, gdzie wpisana jest pewna wartość. Kompilator (interpreter) dba o właściwy przydział, w assemberze progamista musiał pamiętać do którego bajtu pamięci wpisał daną wielkość. A. Matuszak (13) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery Instrukcja przypisania I x←7 niech nowa wartość x wynosi 7 I w większości języków przypisanie jest wyrażane znakiem „=” I to nie jest równanie! x =x +1 x ←x +1 I I wartości lewo– i prawostronne ta sama instrukcja może być tłumaczona na różne polecenia assemblera, x = 1, x = 1.1 A. Matuszak (14) 7 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery Instrukcje sterujące warunkowa∗ – jeśli warunek jest spełniony wykonaj pewien ciąg instrukcji pętli o określonej ilości przebiegów pętli∗ nieokreślonej ilości przebiegów wielokrotnego wyboru skoku – od 30 lat niepożądana A. Matuszak (15) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery Funkcja I również instrukcja sterująca I umożliwia skrócenie programu, gdyż powtarzające się fragmenty zamykane są w funkcji I umożliwia rozbicie złożonego problemu na ciąg prostszych problemów, prostszych na jeszcze prostsze itd. aż uzyskamy ciąg elementarnie prostych zagadnień, te zamykamy w funkcje (które łatwo napisać), z nich budujemy bardziej skomplikowane funkcje itd. A. Matuszak (16) 8 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery Argumenty funkcji I przekazywanie argumentów przez zmienną I przekazywanie argumentów przez wartość (kopiowanie) A. Matuszak (17) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery Ale o co chodzi? Ile wynosi x na końcu? funkcja y=f(x) x=1; y=x+1; koniec funkcji ... x=7; z=f(x); x=? A. Matuszak (18) 9 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Język maszynowy i assembler Język wysokiego poziomu Kompilatory i interpretery przez zmienną – skoro zmienna x jest przekazywana do funkcji i ta zmienia jej wartość to po wyjściu z funkcji wartość x jest zmieniona i wynosi 1 przez wartość (kopię) – najpierw na stosie tworzona jest kopia zmiennej x o takiej samej wartości i funkcja wszystkie operacje wykonuje na kopii, więc wartość samej zmiennej x pozostaje nienaruszona i dalej jest 7 Przekazywanie argumentów przez wartość jest bezpieczniejsze. Napisać funkcję, która wczytuje do zmiennej x wartość wprowadzoną z klawiatury! A. Matuszak (19) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Pozycyjny układ liczenia Cyfry rzymskie: IX+LC=? Cyfry arabskie: 2341 = 2·1000+3·100+4·10+1·1 = 2·103 +3·102 +4·101 +1·100 Pozycyjny układ liczenia: ABCa = A · a2 + B · a1 + C · a0 A. Matuszak (20) 10 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Układ dwójkowy: 101112 = 1·24 +0·23 +1·22 +1·21 +1·20 = 1·16+0·8+1·4+1·2+1·1 = 2310 Układ ósemkowy: 1238 = 1 · 82 + 2 · 81 + 3 · 80 = 1 · 64 + 2 · 8 + 3 · 1 = 8310 Układ szesnastkowy (A=10, B=11, . . . F=15): 7116 = 7 · 161 + 3 · 160 = 7 · 16 + 1 · 1 = 11310 F 116 = 15 · 161 + 3 · 160 = 15 · 16 + 1 · 1 = 24110 A. Matuszak (21) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Przeliczanie z dziesiętnego na dwójkowy Kolejne reszty z dzielenia liczy przez 2 dają (od końca) liczbę dwójkową. 23 : 2 = 11 r 1 11 : 2 = 5 r 1 5:2=2r 1 2:2=1r 0 1:2=0r 1 2310 = 101112 A. Matuszak (22) 11 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Przeliczanie z dwójkowego na ósemkowy i szesnastkowy dzielimy liczbę na grupy po trzy cyfry: 101112 = {10} {111} = {2} {4 + 2 + 1} = {2} {7} = 278 dzielimy liczbę na grupy po cztery cyfry: 101112 = {1} {0111} = {1} {4 + 2 + 1} = {1} {7} = 1716 = 2310 A. Matuszak (23) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Kod Morse’a e. o --- s ... t- sos ... --- ... ...---... → eeeoeee ? sos ? eeettteee /.../---/.../ → sos /./././---/./././ → eeeoeee Trzy stany: “.” , “-” i “/” (0,1 i 2) A. Matuszak (24) 12 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Kodowanie stałej i zmiennej długości Kod Morse’a jest przykładem kodowania o zmiennej długości (każdy znak może mieć inną ilość kropek/kresek). Wtedy niezbędny jest separator. Alternatywą jest użycie kodowania o stałej długości Braille, Baudot (dalekopis). A. Matuszak (25) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Komputer Brak separatora w reprezentacji binarnej. Procesor przetwarza dane w porcjach o ustalonej wielkości (ilość bitów). Procesor ma zdefiniowaną, niewielką liczbę typów danych, które potrafi przetwarzać. Każdy typ ma określoną długość (ilość bitów) i reprezentację (znaczenie bitów). Typy danych i ich reprezentacja są cechami architektury komputera (głównie procesora). Programista może używać własnych typów ale musi oprogramować operacje. A. Matuszak (26) Technologie informacyjne – Wykład IV-VI 13 Wykład IV Wykład V Wykład VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Reprezentacja danych Bit – wartość reprezentująca 0 lub 1. Każda liczba (całkowita) zapisana w postaci dwójkowej (binarnej) odpowiada sekwencji (ciągowi) bitów. Ze względów praktycznych bity grupujemy w porcje zwane bajtami. 1 bajt (1B) (ang. byte) zawiera 8 bitów. Wielokrotności bajtu to: kilobajt (kB) równy 1024 B megabajt (MB) 10242 B gigabajt (GB) 10243 B (≈ 1.07 · 109 B) Konflikt z przedrostkami SI. KiB (kibibajty), MiB (mibibajty), GiB (gibibajty) A. Matuszak (27) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Różne reprezentacje Ustalenie długości (ilości bitów) nie zawsze jednoznacznie określa reprezentację. W wielu przypadkach istnieją różne możliwości reprezentacji przy ustalonej długości. A. Matuszak (28) 14 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Liczby całkowite ze znakiem Jeśli chcemy uwzględnić znak liczby to musimy poświęcić jeden bit na zaznaczenie, że liczba jest ujemna. Powoduje to, że pierwszy bit znaczy co innego niż wszystkie pozostałe. Oprócz tego mamy +0 i -0. Arytmetyka uzupełnieniowa: najbardziej znaczący bit ma znak -. 10111U2 = −1 · 24 + 0 · 23 + 1 · 22 + 1 · 21 + 120 = −16 + 4 + 1 = −11 (wiodące zera!) A. Matuszak (29) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Liczby rzeczywiste Najprostszy pomysł, para liczb całkowitych: 1234.56 → 1234 i 56 Znaczne ograniczenie zakresu. Liczba rzeczywista w postaci znormalizowanej: 1234.56 = 0.123456 · 105 Lepszy pomysł, trójka liczb całkowitych: 0.123456 · 105 → 0 123456 5 Zera nie trzeba pamiętać, jeśli umówimy się, że pierwsza cyfra z drugiej trójki jest różna od zera! Jak zapisać 0.0? A. Matuszak (30) 15 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Znaki Pozornie oczywista reprezentacja znaków (liter, cyfr, znaków interpunkcyjnych i in.) sprawia duże kłopoty. A. Matuszak (31) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki taśma dziurkowana – dalekopis NR 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Kod ••◦◦◦ •◦◦•• ◦•••◦ •◦◦•◦ •◦◦◦◦ •◦••◦ ◦•◦•• ◦◦•◦• ◦••◦◦ ••◦•◦ ••••◦ ◦•◦◦• ◦◦••• ◦◦••◦ ◦◦◦•• ◦••◦• Lit. A B C D E F G H I J K L M N O P Zn ? : $ 3 ! & $ 8 ’ ( ) . , 9 0 NR 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 A. Matuszak (32) 16 Kod •••◦• ◦•◦•◦ •◦•◦◦ ◦◦◦◦• •••◦◦ ◦•••• ••◦◦• •◦••• •◦•◦• •◦◦◦• ◦◦◦•◦ ◦•◦◦◦ ••••• ••◦•• ◦◦•◦◦ ◦◦◦◦◦ Lit. Q R S T U V W X Y Z Zn 1 4 BELL 5 7 ; 2 / 6 “ CR LF LETTERS FIGURES SPACE BLANK Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki ASCII ACSII to międzynarodowy standard zapisu znaków (liter, cyfr i in.) przy pomocy ciągu bitów. Jako wyjątek od reguły ASCII jest niezależny od architektury. Każdy znak jest zapisany w jednym bajcie czyli na 8 bitach. Każdemu znakowi jest przypisana pozycja w tabeli. Każdej pozycji (liczbie od 0) przypisana jest sekwencja bitów będąca reprezentacją dwójkowa pozycji. Znaków może być 256. A. Matuszak (33) Wykład IV Wykład V Wykład VI {b7 b6 b5 } {b4 b3 b2 b1 } A. Matuszak (34) 17 Technologie informacyjne – Wykład IV-VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki {0 − 7} {0 − F } Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI A. Matuszak (35) Wykład IV Wykład V Wykład VI A. Matuszak (36) 18 Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Technologie informacyjne – Wykład IV-VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki ASCII Art =;-) [8^/ %-o | | | )_) )_) )_) )___))___))___)\ )____)____)_____)\\ _____|____|____|____\\\__ ---------\ /--------^^^^^ ^^^^^^^^^^^^^^^^^^^^^ ^^^^ ^^^^ ^^^ ^^ ^^^^ ^^^ A. Matuszak (37) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Rozszerzone ASCII Znaki narodowe. polskie: ą, ę, ć, ł, ó, ń, ś, ź, ż Strony kodowe: I I I cp852, ą → 165, ę → 169 cp1250, ą → 185, ę → 234 iso–8859–2, ą → 177, ę → 234 Brak informacji o kodowaniu wewnątrz dokumentu!! A. Matuszak (38) 19 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki MIME Poczta elektroniczna Content-Type: text/plain; charset=. . . Content-Transfer-Encoding: . . . I 8bit Wykłady odbywają się we środy I quoted–printable Wyk=B3ady odbywaj=B1 si=EA we =B6rody I base64 (nie używać do tekstu!!) V3lrs2FkeSBvZGJ5d2FqsSBzaeogd2UgtnJvZHkK A. Matuszak (39) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Unicode I utf–16 I I I 65536 znaków każdy znak jest zapisywany na dwu bajtach, ponieważ znak o kodzie 0 (null byte) jest powszechnie używanym separatorem, konflikt z istniejącymi systemami informatycznymi utf–8 I I I 4.29 · 109 znaków zmienna długość, od 1 do 4 bajtów przy 1 bajcie zgodny z podstawowym ASCII, więc null bajt zachowuje swoje znaczenie A. Matuszak (40) 20 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Układy liczenia Reprezentacja danych Różne reprezentacje Znaki Czcionki 16x16=256 4 miliardy (znaków) x 256 (pól) x 8 (kolorów) > 8 TB ?? A. Matuszak (41) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Porządek danych Liczby całkowite Liczby rzeczywiste Porządek danych Cyfry w liczbie: 1234 Pismo: I od lewej do prawej I od prawej do lewej I od góry do dołu Kolejność liczebników: I polski: dwadzieścia-jeden I angielski: twenty-one I niemiecki: ein-und-zwanzig A. Matuszak (42) 21 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Porządek danych Liczby całkowite Liczby rzeczywiste Porządek danych (2) Kod pocztowy: I Europa kontynentalna kod miasto: 31–155 Kraków I Kraje anglosaskie miasto kod: BOURNEMOUTH BH1 1AA Data (LC TIME): I polski (dawny): dd/mm/yyyy 13/07/2003 I polski (nowy): yyyy-mm-dd 2003-07-13 I amerykański: mm/dd/yyyy 07/13/2003 (Farenheit 9/11 → Farenheit 11 września) A. Matuszak (43) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Porządek danych Liczby całkowite Liczby rzeczywiste Kolejność bajtów Jonathan Swift „Podróże Guliwera”. Wojna Liliputów i Blefusków czy jajko należy obierać od grubego końca czy od cienkiego. Analogiczny i równie zażarty spór toczył (i toczy) wśród informatyków na temat kolejności danych. Przedmiot sporu najczęściej ilustruje się przykładzie czterech bajtów. Czy powinny być w kolejności 1-2-3-4 czy też 4-3-2-1 A. Matuszak (44) 22 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Porządek danych Liczby całkowite Liczby rzeczywiste Kolejność bajtów - Endian big endian – big end first, grubokońcowość I 4-3-2-1 I naturalna kolejność I procesory SPARC, Motorola 68000, PowerPC little endian – little end first, cienkokońcowość I kolejność 1-2-3-4 I kolejność operacji (przeniesienia) I procesory Intel x86, AMD64 middle-endian (historyczny) I kolejność 2-1-4-3 (lub 3-4-1-2) I szerokość szyny danych a procesor! I DEC PDP-11 A. Matuszak (45) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Porządek danych Liczby całkowite Liczby rzeczywiste Liczby całkowite Liczby całkowite bez znaku ze znakiem 32 bity [0 4294967295] 64 bity [0 18446744073709551615] 32 bity [−2147483648 2147483647] 64 b. [−9223372036854775808 9223372036854775807] 10! = 3628800 (7cyfr) 15! = 1307674368000 (14 cyfr, większe iż MAX INT ) 15 · 14 · · · · · 11 360360 15 15! = = = = 3003 10 10! · 5! 5! 120 A. Matuszak (46) 23 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Porządek danych Liczby całkowite Liczby rzeczywiste Zegar A. Matuszak (47) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Porządek danych Liczby całkowite Liczby rzeczywiste Arytmetyka liczb całkowitych a◦b =c mod(MAX INT + 1) A. Matuszak (48) 24 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Porządek danych Liczby całkowite Liczby rzeczywiste Matematyka a komputer Z punktu widzenia matematyki jest obojętne w jaki sposób obliczamy wartość, w przypadku użycia komputera sposób obliczania nie jest obojętny!! A. Matuszak (49) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Porządek danych Liczby całkowite Liczby rzeczywiste Liczby całkowite 120! = 6 689 502 913 449 127 057 588 118 054 090 372 586 752 746 333 138 029 810 295 671 352 301 633 557 244 962 989 366 874 165 271 984 981 308 157 637 893 214 090 552 534 408 589 408 121 859 898 481 114 389 650 005 964 960 521 256 960 000 000 000 000 000 000 000 000 000 ≈ 6, 69 · 10198 (liczba blisko 200-cyfrowa) A. Matuszak (50) 25 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Porządek danych Liczby całkowite Liczby rzeczywiste Liczby rzeczywiste 101.110112 = 1·22 +0·21 +1·20 +1·2−1 +1·2−2 +0·2−3 +1·2−4 = 1 1 + 1 · 32 = 5.8437510 1 · 4 + 0 · 2 + 1 · 1 + 1 · 12 + 1 · 14 + +0 · 18 + 1 · 16 0.8437510 =??2 0.84375 · 2 = 1.6875 → 1 + 0.6875 0.6875 · 2 = 1.375 → 1 + 0.375 0.375 · 2 = 0.75 → 0 + 0.75 0.75 · 2 = 1.5 → 1 + 0.5 0.5 · 2 = 1 → 1 + 0.0 A. Matuszak (51) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Porządek danych Liczby całkowite Liczby rzeczywiste Liczby rzeczywiste 1 = 0.210 =??2 5 0.2 · 2 = 0.4 → 0 + 0.4 0.4 · 2 = 0.8 → 0 + 0.8 0.8 · 2 = 1.6 → 1 + 0.6 0.6 · 2 = 1.2 → 1 + 0.2 0.210 = 0.(0011)(0011)(0011) . . . (0011)2 Rozwinięcie nieskończone, okresowe!!! (Patriot kontra Scud) A. Matuszak (52) 26 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Porządek danych Liczby całkowite Liczby rzeczywiste Arytmetyka IEEE 754 Zmiennoprzecinkowa arytmetyka koprocesora x87. FPU (Floating Point Unit). Dla linii procesorów x86 od Intel 80486DX FPU został wbudowany do procesora. A. Matuszak (53) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Porządek danych Liczby całkowite Liczby rzeczywiste Arytmetyka IEEE 754 Dwa rodzaje liczb zmiennoprzecinkowych: pojedynczej precyzji 32 bity float podwójnej precyzji 64 bity double Reprezentacja (ilość bitów) jest taka sama dla procesorów 32 bitowych (obecne Intele, AMD etc.) jak i dla procesorów 64 bitowych (Ithanium AMD64). Zakres dla liczb pojedynczej precyzji obejmuje ±1.18 · 10−38 do około ±3.4 · 1039 . Zakres dla liczb podwójnej precyzji obejmuje ±2.2 · 10−308 do około ±1.8 · 10308 . Stała Plancka h = 6, 6260693(11) · 10−34 J· s A. Matuszak (54) 27 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Porządek danych Liczby całkowite Liczby rzeczywiste Arytmetyka IEEE 754 Część ułamkowa (fraction) jest normalizowana tak aby pierwszy bit był jedynką i ta jedynka nie jest zapamiętywana. W konsekwencji nie da się reprezentować w ten sposób wartości 0.0 A. Matuszak (55) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Porządek danych Liczby całkowite Liczby rzeczywiste Arytmetyka IEEE 754 – wartości specjalne IEEE 754 ma reprezentację specjalną dla kilku wartości: 0.0 jest reprezentowane przez dwie wartości +0.0 i −0.0, które się różnią! Inf nieskończoność, istnieje zarówno +∞ jak i −∞ NaN symbol nieoznaczony, (Not a Number) A. Matuszak (56) 28 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Porządek danych Liczby całkowite Liczby rzeczywiste Arytmetyka IEEE 754 – wartości specjalne Po lewej stronie: 1.0/0.0 → Inf −1.0/0.0 → -Inf 0.0/0.0 → NaN Po prawej stronie!!: x =Inf y =NaN x ∗ y → NaN A. Matuszak (57) Wykład IV Wykład V Wykład VI Technologie informacyjne – Wykład IV-VI Porządek danych Liczby całkowite Liczby rzeczywiste Arytmetyka liczb zmiennoprzecinkowych Skończona ilość bitów reprezentacji powoduje, że możemy jedynie reprezentować skończoną liczbę wartości. Skutki: Rozdzielność mnożenia względem dodawania (odejmowania): 4 4 3 − 1 3 6= 1 = 3 · 3 − 3 Punkt przecięcia dwu prostych może nie należeć do żadnej z nich. Dwie proste równoległe mogą się przecinać. 1x + 3y = 6 1 3 x + 1y = 5 A. Matuszak (58) 29 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Porządek danych Liczby całkowite Liczby rzeczywiste Proste się przecinają 4 3x-5y=0 2x+3y=8 (2,1) 3 2 1 0 -1 0 1 2 3 A. Matuszak (59) Wykład IV Wykład V Wykład VI 4 5 Technologie informacyjne – Wykład IV-VI Porządek danych Liczby całkowite Liczby rzeczywiste Geometria A. Matuszak (60) 30 Technologie informacyjne – Wykład IV-VI Wykład IV Wykład V Wykład VI Porządek danych Liczby całkowite Liczby rzeczywiste Topologia A. Matuszak (61) 31 Technologie informacyjne – Wykład IV-VI