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

Podobne dokumenty