Wstęp do informatyki
Podstawy arytmetyki komputerowej
Cezary Bolek
cbolek@ki.uni.lodz.pl
Uniwersytet Aódzki
Wydział Zarządzania
Katedra Informatyki
Pojęcie liczebności
" Naturalna zdolność człowieka do postrzegania liczebności nie
przekracza 3 lub 4.
" Aby określić liczebność bardziej licznych zbiorów trzeba u\ywać pojęć
abstrakcyjnych liczebników.
Wstęp do informatyki Cezary Bolek
2
Liczenie bez liczebników
" Budowa ludzkiego ciała dostarczyła
pierwszych narzędzi ułatwiających
liczenie.
" We współczesnych językach, nazwy
niektórych liczebników pochodzą
bezpośrednio od nazw części ciała.
Wstęp do informatyki Cezary Bolek
3
1
Zapis liczb
Egipt 3000-1000 p.Chr.
Indie 2500-1700 p.Chr.
Wstęp do informatyki Cezary Bolek
4
Zapis liczb
Grecja 500-200 p.Chr.
Cywilizacja Majów 300-1400 A.D.
Wstęp do informatyki Cezary Bolek
5
Zapis liczb
Licja (Azja Mniejsza) 500-0 p.Chr.
Cywilizacja Etruska 600-400 p.Chr.
Wstęp do informatyki Cezary Bolek
6
2
Systemy liczbowe
Addytywne:
" najprostsze i najstarsze
" liczba jest sumą symboli (pózniej cyfr)
" Å‚atwe dodawanie i odejmowanie
" trudne mno\enie i dzielenie
Pozycyjne
" współcześnie w u\yciu
" liczba jest sumÄ… cyfr z wagÄ… pozycji
" koncepcja symbolu pustego zera
" proste +, -, *, / i inne
Wstęp do informatyki Cezary Bolek
7
System addytywny
X=VV=IIIIIIIIII, V=IIIII, I=1
Cyfra (symbol) ma swoją stałą wartość
liczba
X X X I I I
pozycja cyfry 6 5 4 3 2 1
X6 = X5 = X4 = dziesięć
Pozycja cyfry nie ma znaczenia
X X X I I I = X+X+X+I+I+I = 10
Wartość liczby jest sumą cyfr
(istniejÄ… drobne modyfikacje tej zasady)
Wstęp do informatyki Cezary Bolek
8
Zero
1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9
?
Liczba cyfr wyznacza tzw. podstawÄ™ systemu liczbowego
(np.10). Liczby większe wymagają zapisu w postaci
kombinacji cyfr o ró\nych wagach - wielokrotnościach
podstawy.
Cyfra 0 ma znaczenie szczególne
symbolizuje brak cyfry na określonej pozycji,
zaznaczając jednocześnie tę pozycję
Liczba 10 - w ka\dym systemie pozycyjnym
oznacza pierwszą liczbę zło\oną
Wstęp do informatyki Cezary Bolek
9
3
System pozycyjny
liczba
1 3 4 1 `" 1 4 3 1
`"
`"
`"
pozycja cyfry 3 2 1 0
1 `" 1
`"
`"
`"
Pozycja cyfry ma (!) znaczenie
1341 = 1·103+3·102+4·101+1 ·100
Wartość liczby jest sumą cyfr
pomno\onych przez wagę poło\enia
(potęgę podstawy sytemu)
Wstęp do informatyki Cezary Bolek
10
System pozycyjny
am am-1 ... a2 a1 a0 b podstawa
m...0 pozycja
am·bm + am-1·bm-1+...+ a1·b1 + a0·b0
np.
system dziesiętny: 0 1 2 3 4 5 6 7 8 9
1234 = 1*103 + 2*102 + 3*101 + 4*100 (dziesiętnie)
system ósemkowy: 0 1 2 3 4 5 6 7
1207 = 1*83 + 2*82 + 0*81 + 7*80 (dziesiętnie)
system szesnastkowy: 0 1 2 3 4 5 6 7 8 9 A B C D E F
a2f5 = 10*163 + 2*162 + 15*161 + 5*160 (dziesiętnie)
Wstęp do informatyki Cezary Bolek
11
System szesnastkowy
(heksadecymalny)
Hex Dec Hex Dec
0 0 A 10
1 1 B 11
2 2 C 12
10h = 16
3 3 D 13
19h = 25
4 4 E 14
1Ah = 26
5 5 F 15
52h = 82
6 6
100h = 256
7 7
BABAh = 47802
8 8
F4240h = 1000000
9 9
Wstęp do informatyki Cezary Bolek
12
4
System dwójkowy
(binarny)
Najprostszy z mo\liwych: cyfry 0 i 1
Do zapisu liczb mo\na u\ywać nie tylko cyfr, ale
wszystkich dwu-stanowych zjawisk:
" dzwięk krótki i długi: alfabet Morse a
" kolor czarny i biały: kody paskowe
" napięcie wysokie i niskie: liczby w komputerach
Zapis liczb za pomocÄ… tylko dwu cyfr jest najbardziej
odporny za zakłócenia, gdy\ liczby zapisuje się za
pomocą dwóch skrajnie ró\nych stanów, bez \adnych
stanów pośrednich
" fundament niezawodności techniki cyfrowej.
Wstęp do informatyki Cezary Bolek
13
System dwójkowy
(binarny)
cyfra dwójkowa 0 lub 1 bit (binary digit)
liczba n-bitowa: an-1 ... a1 a0
an-1·2n-1 + ...+ a1·21 + a0·20
101b= 1*22 + 0*21 + 1*20 = 4+1 = 5d
10011001b= 27+24+23+20 = 128+18+8+1 = 153
Wstęp do informatyki Cezary Bolek
14
Naturalny kod binarny
NKB
Naturalny kod binarny, to zapis liczby dwójkowej
an-1 ... a1 a0,
której wartość oblicza oblicza się według wzoru:
an-1·2n-1 + ...+ a1·21 + a0·20
Wstęp do informatyki Cezary Bolek
15
5
Bajty i słowa
Liczby dwójkowe mogą mieć dowolną długość, ale w
systemach komputerowych przyjęły następujące
standardy długości liczb:
8-bitów Bajt (Byte), B
16-bitów Słowo (Word), W
32-bity Długie słowo (Long Word), L
Double
Zakresy liczb dwójkowych (w NKB) są następujące:
Bajt: 0 ... 28-1 = 0 ... 255
SÅ‚owo: 0 ... 216-1 = 0 ... 65535
D.słowo: 0 ... 232-1 = 0 ... 2147483647
Wstęp do informatyki Cezary Bolek
16
Kilo, Mega, Giga ...
(w informatyce)
W systemie jednostek SI: 1k = 1000, 1M=1000k, 1G=1000M
W systemach pamięci komputerowych najmniejsza porcja
danych to 1Bajt = 1B (8-bitów, 8b).
Pojemności pamięci mierzy się więc powszechnie w tej
jednostce, tj. jako wielokrotność 1B.
1kB = 210B = 1024B
1MB = 210kB = 1024kB
1GB = 210MB = 1024MB
Marketing vs Informatyka
Twardy dysk: 40GB 37.2GB
Wstęp do informatyki Cezary Bolek
17
Liczby dwójkowe
do zapamiętania
Dec Bin Hex Dec Bin Hex
0 0000 0 8 1000 8
1 0001 1 9 1001 9
2 0010 2 10 1010 A
3 0011 3 11 1011 B
4 0100 4 12 1100 C
5 0101 5 13 1101 D
6 0110 6 14 1110 E
7 0111 7 15 1111 F
Wstęp do informatyki Cezary Bolek
18
6
Przeliczanie
Dec Bin(NKB)
Przeliczanie liczb dziesiętnych na dwójkowe
polega na rozkładzie liczby na sumę potęg liczby 2,
i zapisie 1 na pozycji równej wartości danej potęgi.
1 2 4 8 16 32 64 128 256 512 1024
np.
129 = 128 + 1 = 27 + 20 = 10000001b
143 = 128 + 8 + 4 + 2 + 1 = 100011141b
77 = 64 + 8 + 4 + 1 = 01001101b
17 = 16 + 1 = 00010001b
Wstęp do informatyki Cezary Bolek
19
Przeliczanie
Bin(NKB) Dec
Przeliczanie liczb dwójkowych na dziesiętne
polega na sumowaniu potęg liczby 2
odpowiadających pozycjom 1 w liczbie dwójkowej.
10000001b = 27 + 20 = 128 + 1 = 129
00010001b = 16+ 1 = 17
Wstęp do informatyki Cezary Bolek
20
Przeliczanie
Dec "! Hex
"!
"!
"!
3F8h = 3*162 + 15*161 + 8*160 = 768 + 240 +8
= 1016
375 = 1*256 + 7*16 + 7 = 1*162 + 7*161 + 7*160
= 177h
W dzisiejszych czasach ...
najlepiej skorzystać z kalkulatora
Wstęp do informatyki Cezary Bolek
21
7
Przeliczanie
Bin(NKB) "! Hex
"!
"!
"!
Przeliczanie liczb dwójkowych na szesnastkowe
(lub odwrotnie) polega na zamianie ka\dych 4 cyfr
dwójkowych na odpowiednią cyfrę heksadecymalną.
1001 1101 5 A
9 D 0101 1010
0101 1010 0001 0111b = 5A17h
Liczby szesnastkowe ułatwiają posługiwanie się du\ymi liczbami dwójkowymi
Wstęp do informatyki Cezary Bolek
22
Dodawanie liczb dwójkowych (NKB)
1 1 1
10010100 (148)
+ 01001111 ( 79)
11100011 (227)
1 1 1 1 1
10011110 (158)
+ 01100100 (100)
bit
100000010 ( 2) 258>255!
przeniesienia
(carry)
! Uwaga na przekroczenie zakresu liczby
Wstęp do informatyki Cezary Bolek
23
Odejmowanie liczb dwójkowych
W ka\dym systemie liczbowym:
X Y = X + ( Y)
oraz
X X = X + ( X) = 0
Odejmowanie liczb najłatwiej zrealizować jako
dodawanie liczby ujemnej.
Potrzebny jest zatem sposób zapisu liczb ujemnych.
(NKB nie pozwala na zapis liczb ujemnych)
Wstęp do informatyki Cezary Bolek
24
8
Liczby ujemne kod Znak-Moduł
Kod Znak-Moduł (ZM):
niech najstarszy bit oznacza znak liczby
1 minus, 0 - plus
10001001 = -9
znak + moduł (NKB)
System ZM nie pozwala na proste wykonywanie
dodawania liczb ujemnych w praktyce nie jest ju\
stosowany.
01000001 (65)
+ 10000001 (-1)
11000010 (-66 !)
Wstęp do informatyki Cezary Bolek
25
Liczby ujemne
Uzupełnienie Jedynkowe
Uzupełnienie jedynkowe (U1): negacja bitów
01000001 ( 65)
+ 10111110 (-65)
11111111 ( -0 ?)
01000001 (65)
+ 11111110 (-1)
1 00111111 (63 !)
Wstęp do informatyki Cezary Bolek
26
Liczby ujemne
Uzupełnienie Dwójkowe
Uzupełnienie dwójkowe (U2):
1. negacja bitów
2. dodanie liczby 1
np. aby zapisać liczbę 39 w kodzie U2:
sprawdzenie:
00100111 (39)
00100111 (39)
11011000 U1
11011001 (-39)
00000001 +1
+
00000000
11011001 (-39)
Wstęp do informatyki Cezary Bolek
27
9
Kod U2
Kod uzupełnienia dwójkowego (U2),
to zapis liczby dwójkowej
an-1 ... a1 a0,
której wartość oblicza oblicza się
według wzoru:-
an-1·2n-1 + an-2·2n-2 + ...+ a1·21 + a0·20
znak minus (-) przy
największym składniku
Wstęp do informatyki Cezary Bolek
28
U2 c.d.
an-1 an-1 ... a1 a0
2n-1 + moduł (NKB)
(bit znaku)
11111111 = -1
27 + moduł (NKB)
128 + 127 = 1
11111111 ( -1) 11111111 (-1)
+ 00000001 (+1) + 11111111 (-1)
1 00000000 ( 0) 1 11111110 (-2)
Wstęp do informatyki Cezary Bolek
29
Liczby U2 zakres
Ze względu na postać liczby:
an-1·2n-1 + an-1·2n-2 + ...+ a1·21 + a0·20
zakres liczb w U2 wynosi:
2n-1... 0 ... 2n-1 1
dla liczb n-bitowych.
W szczególności dla bajta (8-bitów) zakres ten wynosi:
27... 0 ... 27 1
128 ... 0 ... 127
Wstęp do informatyki Cezary Bolek
30
10
U2 c.d.
reprezentacja 8-bitowych liczb w kodzie U2:
-128 = 10000000
-127 = 10000001
-126 = 10000010
...
-2 = 11111110
-1 = 11111111
0 = 00000000
1 = 00000001
2 = 00000010
...
126 = 01111110
127 = 01111111
Wstęp do informatyki Cezary Bolek
31
U2 c.d.
Wstęp do informatyki Cezary Bolek
32
Przeliczanie
Bin(U2) Dec
Przeliczanie ujemnych liczb U2 na dziesiętne
polega na dodaniu wartości wagi bitu znaku -2n-1
do wartości modułu.
10000001b = -27 + 20 = -128 + 1 = -127
10010001b = -27 + 16+ 1 = -128 + 17= -111
Wstęp do informatyki Cezary Bolek
33
11
Przeliczanie
Dec Bin(U2)
Przeliczanie ujemnych liczb dziesiętnych na U2 polega
odjęciu wartości wagi bitu znaku -2n-1,
(czyli dodaniu 2n-1) od wartości liczby i zapisaniu wyniku
jako modułu (w NKB).
-120:
znak = 1
moduł = -120+27 = -120+128 = 8 = 0001000b
-120 = 10001000b
Wstęp do informatyki Cezary Bolek
34
Działania w kodzie U2
Reguła odejmowania:
aby odjąć jedną liczbę (odjemnik)
od drugiej (odjemna), oblicz uzupełnienie
dwójkowe odjemnika i dodaj do odjemnej.
Rozszerzenie znakowe:
aby liczbę n-bitową U2 zapisać na m-bitach
(m>n), nale\y uzupełnić brakujące bity
wartością najstarszego bitu (0 lub 1)
liczby n-bitowej.
8-bitowa liczba 99 = 10011101b
16-bitowa liczba 99 = 1111111110011101b
Wstęp do informatyki Cezary Bolek
35
Działania w kodzie U2
Reguła przepełnienia (overflow):
przepełnienie (błąd zakresu) występuje podczas
dodawania dwóch liczb ujemnych lub dwóch liczb
dodatnich, gdy wynik ma znak przeciwny.
10000000 (-128) 01111111 ( 127)
+ 11111111 ( -1) + 00000001 ( 1)
1 01111111 ( 127) 10000000 (-128)
Podczas dodawania liczb przeciwnych znaków
przepełnienie nie występuje.
Wstęp do informatyki Cezary Bolek
36
12
Interpretacja liczb dwójkowych
Wartość liczby dwójkowej zale\y od
interpretacji jej zapisu.
Ta sama sekwencja zer i jedynek mo\e
oznaczać ró\ne liczby.
10101010b = 170 (NKB)
10101010b = -86 (U2)
10101010b = -42 (ZM)
Wstęp do informatyki Cezary Bolek
37
13
Wyszukiwarka
Podobne podstrony:
Zagadnienia Wstęp do informatyki 2013
Wstep do informatyki
10 Wstep do prawoznawstwa
Wstęp do pakietu algebry komputerowej Maple
Prezentacja na zajęcia dostęp do informacji publicznej 9 10 2015 (1)
2006 06 Wstęp do Scrum [Inzynieria Oprogramowania]
Wstęp do magii
Informatyka Wprowadzenie Do Informatyki Ver 0 95
Renesans Wstęp do epoki Podłoże społeczno polityczne ~5C5
Wstęp do psychopatologii
BT Wstęp do Pierwszego Listu św Piotra apostoła
Dostęp do informacji publiczej zawartej w dokumentach osób ubiegających się o pracę
Wstęp do projektowania 2014 15 wykład 6,7
więcej podobnych podstron