Architektura komputerów
3. ARYTMETYKA
KOMPUTEROWA
3 ARYTMETYKA KOMPUTEROWA
3.1 Systemy liczbowe
3.2 Arytmetyka dwójkowa
3.2.1 Operacje arytmetyczne w systemie
dwójkowym – liczby dodatnie
3.2.2 Operacje arytmetyczne w systemie
dwójkowym – kod bezpośredni
3.2.3 Operacje arytmetyczne w systemie
dwójkowym – kody uzupełnieniowe
3.3 Liczby zmiennoprzecinkowe
3.4 Znaki alfanumeryczne
3.4.1Kod ASCII
ArKom 2013 – 3. Arytmetyka
komputerowa
2 - 2
• Data 9.1.2013
• Pozycyjne systemy liczbowe:
ArKom 2013 – 3. Arytmetyka
komputerowa
3
r – podstawa; 10, 2, 8, 16
a
i
– współczynnik; 0 ai r-1
n-1 – liczba cyfr całkowitych
m – liczba cyfr ułamkowych
1
0
1
2
1
...
a
a
a
a
a
N
n
n
1
1
0
0
1
1
2
2
1
1
10
10
10
...
10
10
a
a
a
a
a
N
n
n
n
n
i
i
n
m
i
r
a
N
1
Przykład 3.1
• 234,56
10
• 1011,01
2
- ile to jest w systemie
dziesiętnym?
• 234,56
8
– ile to jest w systemie
dziesiętnym?
ArKom 2013 – 3. Arytmetyka
komputerowa
4
dziesiętn
y
dwójkowy
trójkowy ósemkowy szesnastko
wy
0
0
0
0
0
1
1
1
1
1
2
10
2
2
2
3
11
10
3
3
4
100
11
4
4
5
101
12
5
5
6
110
100
6
6
7
111
101
7
7
8
1000
10
8
9
11
9
10
A
11
B
12
C
13
D
14
E
15
F
16
10
17
11
18
19
20
21
ArKom 2013 – 3. Arytmetyka
komputerowa
5
Przykład 3.2
• 210,01
3
• F19A,1
16
- ile to jest w systemie
dziesiętnym
• Konwersja liczb
ArKom 2013 – 3. Arytmetyka
komputerowa
6
Dwójkowe kodowanie cyfr dziesiętnych
BCD (Binary Coded Decimal)
Kod dziesietny
Kod dwójkowo-
dziesiętny
(naturalny)
0
0000
1
0001
2
0010
3
0011
4
0100
5
0101
6
0110
7
0111
8
1000
9
1001
10
?
wagi
8421
ArKom 2013 – 3. Arytmetyka
komputerowa
7
Przykład 3.3
• 100000110110,00010101
• 801,17
• Rejestry – modulo n
ArKom 2013 – 3. Arytmetyka
komputerowa
8
3.2 Arytmetyka dwójkowa
3.2.1 Operacje arytmetyczne w systemie
dwójkowym – liczby dodatnie
• Dodawanie, odejmowanie
Przykład 3.4
• 110111 + 1011 =
• 1011 + 0,101 =
ArKom 2013 – 3. Arytmetyka
komputerowa
9
Przykład 3.5
• 110111 - 1011 =
• 1011 - 0,101 =
• 0,01 – 0,01101 =
ArKom 2013 – 3. Arytmetyka
komputerowa
10
• Mnożenie (rejestry mnożnika,
mnożnej, iloczynu)
Przykład 3.6
• 11101 * 1001 = + rysunek
rejestrów
• 101,011 * 11,0101 =
ArKom 2013 – 3. Arytmetyka
komputerowa
11
• Dzielenie (gdy dzielnik nie jest liczbą
całkowitą, należy przesunąć
przecinek
Przykład 3.7
• 1101,1 : 10,11 =
ArKom 2013 – 3. Arytmetyka
komputerowa
12
3.2.2 Operacje arytmetyczne w systemie
dwójkowym – kod bezpośredni
• Kod bezpośredni – znak
.
moduł liczby
• Uzgadnianie znaku wyniku + operacje na
modułach
Przykład 3.8
• (-10111) + (1011) =1.10111 + 0.1011 =
(rejestry)
• (-1011) + (-0,101) =
• (-101,1) * (+11,01) =
ArKom 2013 – 3. Arytmetyka
komputerowa
13
3.2.3 Operacje arytmetyczne w systemie
dwójkowym – kody uzupełnieniowe
• Uzupełnienie r-te liczby N o podstawie r
ArKom 2013 – 3. Arytmetyka
komputerowa
14
n – liczba pozycji przed
przecinkiem
Przykład 3.9
N = 234,25
N
r
N
n
75
,
765
25
,
234
10
3
N
• Uzupełnienie dwójkowe liczby
• Przykład 3.10
• N = 1101,01
ArKom 2013 – 3. Arytmetyka
komputerowa
15
11
,
10
01
,
1101
10000
01
,
1101
10
4
N
Algorytm otrzymywania uzupełnienia dwójkowego
1. Analizę rozpoczynamy od najmniej znaczącej
pozycji
2. Najmniej znaczące pozycje liczby równe 0,
łącznie z pierwszą napotkaną jedynką
przepisujemy bez zmiany
3. Pozostałe pozycje liczby uzupełniamy dwójkowo
– 0 na 1, 1 na 0
Przykład 3.11
• N = 11001101,01000
ArKom 2013 – 3. Arytmetyka
komputerowa
16
11000
,
00110010
N
Kod uzupełnieniowy N
uzup
ArKom 2013 – 3. Arytmetyka
komputerowa
17
Przykład 3.12
N = +11001101,01000 N
uzup
=
0.11001101,01
N = -1011,0110 N
uzup
=
1.0100,1010
0
.
1
0
.
0
N
gdy
N
N
gdy
N
N
uzup
Algorytm dodawania liczb względnych w kodzie
uzupełnieniowym
1. Zapisać liczby w kodzie uzupełnieniowym
2. Dodać obie liczby łącznie z pozycjami znaków (ew.
przeniesienie na pozycji znaku gubi się
3. Gdy wynik dodawania ma na pozycji znaku 0, to
jest to liczba dodatnia zapisana w kodzie
bezpośrednim. Natomiast gdy na pozycji znaku
jest 1, to wynik jest ujemny, a liczba zapisana w
kodzie uzupełnieniowym i należy
przeprowadzićkonwersje do kodu bezpośredniego.
ArKom 2013 – 3. Arytmetyka
komputerowa
18
Przykład 3.13
Dodaj A = +1001111 oraz B = -0101101
• Kody bezpośredni A = 0.1001111 B =
1.0101101
• Kod uzupełnieniowy A
uzup
= 0.1001111 B
uzup
=
1.1010011
• (A + B)
uzup
= 0.1001111 + 1.1010011=
(1)0.0100010
ArKom 2013 – 3. Arytmetyka
komputerowa
19
3.3 Liczby zmiennopozycyjne
• Cechy (atrybuty) liczby rzeczywistej;
Znak, wielkość (zakres), dokładność
Przykład 3.14
- 2345,000006000
+ 0,0000000000001234
- 987654321,01
• Dostosowanie do operacji
„arytmetycznych”
ArKom 2013 – 3. Arytmetyka
komputerowa
20
• Liczby zmiennopozycyjne,
zmiennoprzecinkowe, notacja naukowa
• Zapis liczby zmiennoprzecinkowej
<znak mantysa wykładnik>
• s (sign) – znak liczby, 1, 0 lub -1
• M (mantissa) – znormalizowana mantysa, liczba
ułamkowa (lub jedna pozycja przed przecinkiem)
• B (base) – podstawa systemu liczbowego (2 dla
systemów komputerowych)
• E (exponent) – wykładnik, liczba całkowita
ArKom 2013 – 3. Arytmetyka
komputerowa
21
E
B
M
s
L
Przykład 3.15
- 2345,000006000 => <- 2345000006 5>
+ 0,0000000000001234 => <+ 1234 -12>
- 987654321,01 => <- 98765432101 10>
ArKom 2013 – 3. Arytmetyka
komputerowa
22
• Notacja naukowa
• Notacja naukowa
L = znak mantysa E wykładnik
Przykład 3.16
- 2345,000006000 => - 2,345E3
+ 0,000 000 000 000 123 4 => + 1,234E-13
- 987 654 321,01 => - 9,8765432101E8
ArKom 2013 – 3. Arytmetyka
komputerowa
23
•
Ograniczona wielkość pól przeznaczonych
do zapisu mantysy i wykładnika
Przykład 3.17
Pole mantysy ma pięć pozycji, czyli
- 2345,000006000 =>
<- 2345000006 5> =>
<- 23450 5>
+ 0,0000000000001234 => <+ 1234 -12> =>
<+ 12340 -12>
- 987654321,01 => <- 98765432101 10> => <-
98765 10>
ArKom 2013 – 3. Arytmetyka
komputerowa
24
• Dwójkowa reprezentacja liczb
zmiennopozycyjnych
• Dla każdego pola liczby zmiennoprzecinkowej są
przeznaczone określone liczby bitów, w których
zapisuje się kody dwójkowe
Przykład 3.17
Pole mantysy ma pięć bitów + znak, a pole
wykładnika 3 bity + znak,
1 10100 0 100 => - 0,5*(10)
4
czyli jaki jest zakres możliwych liczb?
ArKom 2013 – 3. Arytmetyka
komputerowa
25
• Problem zakresu liczb
zmiennopozycyjnych
26.11.2013
ArKom 2013 – 3. Arytmetyka
komputerowa
26
0
+L
m
-L
m
-L
M
+L
M
Nadmi
ar
Overflo
w
Nadmia
r
Overflo
w
Niedomi
ar
Underflo
w
Konieczna
definicja,
• Standard IEEE 754
• Przybliżenie liczby rzeczywistej – zapis:
L= s 2
e
m
• mantysa
ArKom 2013 – 3. Arytmetyka
komputerowa
27
• Zero - można być zakodować na wiele
sposobów - jest kodowane 0 => s=+1,
w=0, m=0
1
,
0
m
• Znak - jeden bit, równy 0 (s= + ) lub 1 (s= - )
• Wykładnik - jak każda inna liczba całkowita w
kodzie uzupełnieniowym do dwóch.
• Mantysa jest mnożona przez 2
f
, gdzie f to liczba
bitów przeznaczona na nią i zapisywana jako
liczba naturalna.
ArKom 2013 – 3. Arytmetyka
komputerowa
28
• Całość zajmuje kolejnych 4 (liczba krótka), 8
(liczba długa) albo 16 bajtów (podwójnej precyzji
– zależy od wymaganej precyzji.
Przykład 3.18
Liczba krótka
ArKom 2013 – 3. Arytmetyka
komputerowa
29
31
30
22
0
s
e
M (kod uzupełnieniowy)
1
8
23
Liczba długa
63
62
51 0
s
e
M (kod uzupełnieniowy)
1
8
23
• Operacje na liczba zmiennopozycyjnych
• Mnożenie, dzielenie
• Dodawanie, odejmowanie
ArKom 2013 – 3. Arytmetyka
komputerowa
30
3.4 Znaki alfanumeryczne
Kody alfanumeryczne stosuje się do
zapisu;
– cyfr,
– liter (różne alfabety),
– znaków pisarskich,
– znaków graficznych,
– znaków funkcyjnych (edytorskich)
ArKom 2013 – 3. Arytmetyka
komputerowa
31
3.4.1 Kod ASCII
• Kod ASCII – American Standard Code for
Information Interchange
• Istnieją:
– wersja 7 bitowa (wersja podstawowa) – każdy znak
zapisywany jest jako kod siedmiobitowy
– wersja 8 bitowa (wersja rozszerzona) – dla
dostosowania się do bajtowej organizacji pamięci i
ósmy bit jest zawsze równy zero
• „bardzo uporządkowany” standard np.
– duże i małe litery różnią się jednym ustalonym (6-tym)
bitem; 0 – duża litera, 1 – mała
– „numeracja” liter odpowiada kolejności w alfabecie
ArKom 2013 – 3. Arytmetyka
komputerowa
32
• Litery
• alfabetem podstawowym - alfabet łaciński –
tabela kodowa - i wtedy znaki są zapisywane jako
• inne alfabety -„własne rozszerzające tabele
kodowe” + odwołanie poprzez sekwencję
rozszerzającą (escape sequence) się znakiem
funkcyjnym ESC; zapis
ArKom 2013 – 3. Arytmetyka
komputerowa
33
0
Bity 7 - 1
1
Bity 7 - 1
• Cyfry
• zapis jednobajtowy – używany do przesłania
liczby
• zapis upakowany – do przetwarzania
ArKom 2013 – 3. Arytmetyka
komputerowa
34
0011
Kod BCD
Kod BCD
Kod BCD
• Znaki sterujące
• Ramka protokołu BISYNC (Binary Synchronous
Transmission) [WK?]
ArKom 2013 – 3. Arytmetyka
komputerowa
35
SY
N
SY
N
SO
H
nagłówek
ST
X
tekst
ET
X
BC
C
Znaki kodu ASCII
SOH – Start of Head
STX – Start of Text
ETX – End of Text
Znaki spoza kodu ASCII
SYN – synchronizacja
BCC – Block Check Character – znak kontrolny - nie
jest znormalizowane w kodzie ASCII i może to być
suma modulo 2