3 października 2012
Wojciech Kucewicz
1
3 października 2012
Wojciech Kucewicz
2
Cyfrowy zapis
informacji
Cyfrowy zapis
informacji
3 października 2012
Wojciech Kucewicz
3
Bit, Bajt, Słowo
Kody liczbowe
Konwersja liczb między różnymi kodami
Kod alfanumeryczny
Kody BCD
Zapis liczb dwójkowych ze znakiem
Dodawanie liczb binarnych ze znakiem
Liczby zmiennoprzecinkowe
Bit, Bajt, Słowo
Kody liczbowe
Konwersja liczb między różnymi kodami
Kod alfanumeryczny
Kody BCD
Zapis liczb dwójkowych ze znakiem
Dodawanie liczb binarnych ze znakiem
Liczby zmiennoprzecinkowe
3 października 2012
Wojciech Kucewicz
4
Bit, Bajt, Słowo
Bit, Bajt, Słowo
3 października 2012
Wojciech Kucewicz
5
Cyfrowy zapis informacji
Cyfrowy zapis informacji
Bit
[ang.
bi
nary digi
t
] jest elementem zbioru
dwuelementowego używanym do reprezentowania
informacji. Bit może mieć wartość 1 lub 0.
1
0
0
1
1
0
0
0
Bit
MSB
– bit najbardziej znaczący
LSB
– bit najmniej znaczący
3 października 2012
Wojciech Kucewicz
6
Cyfrowy zapis informacji
Cyfrowy zapis informacji
1
0
0
1
1
0
0
0
Bajt (byte)
ciąg złożony z 8 bitów. Bajt pozwala na zapisanie
w systemie binarnym 2
8
liczb (0 -255)
Byte
3 października 2012
Wojciech Kucewicz
7
Cyfrowy zapis informacji
Cyfrowy zapis informacji
Słowo (word)
jest informacją złożoną z n bajtów. Słowo
może zkładać się z 8, 16, 32 lub 64 bitów.
Słowo jest traktowane przez układy komputera jako dane
do wykonywanej aktualnie operacji, bądź jako zakodowany
rozkaz.
1
0
0
1
1
0
0
0
1
0
0
1
1
0
0
0
Word
3 października 2012
Wojciech Kucewicz
8
Cyfrowy zapis informacji
Cyfrowy zapis informacji
Rozmiar słowa
Maksymalna liczba możliwa do zapisania
8 bits
255
16 bits
65535
32 bits
4 294 967 295
64 bits
18 446 744 073 709 551 615
3 października 2012
Wojciech Kucewicz
9
Kody liczbowe
Kody liczbowe
Cyfrowy zapis informacji
Cyfrowy zapis informacji
3 października 2012
Wojciech Kucewicz
10
Kody liczbowe
Kody liczbowe
Najbardziej rozpowszechnionymi kodami liczbowymi są kody
naturalne.
Zapis liczb w kodzie naturalnym jest pozycyjny tj. każdy znak a
i
zajmuje ściśle określoną pozycję i, której przyporządkowana jest
odpowiednia waga w
i
= p
i
, gdzie p jest podstawą kodu liczbowego.
Podstawa kodu określa ilość znaków używanych w kodzie.
3 października 2012
Wojciech Kucewicz
11
Kod dziesiętny
Kod dziesiętny
Powszechnie stosowany jest kod (system) dziesiętny. Został
opracowany w Indiach ok. V wieku i poprzez Arabów upowszechnił się
w Europie.
Oparty jest na dziesięciu znakach (cyfrach):
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Ilość znaków jest podstawą systemu –
p = 10
Dowolną liczbę x przedstawia się za pomocą słowa A składającego się
z n cyfr zgodnie ze wzorem:
x = L(A) =
aj …a
4
a
3
a
2
a
1
a
0
. a
-1
a
-2
gdzie
a
jest jednym z używanych znaków, a indeks
j
jest potęgą
podstawy
p
przez którą znak jest mnożony
3 października 2012
Wojciech Kucewicz
12
Kod dziesiętny
Kod dziesiętny
Liczba
a
j
… a
1
a
0
. a
-1
a
-2
a
j
•p
j
+ ...+ a
1
•10
1
+ a
0
•10
0
+ a
-1
•10
-1
+ a
-2
•10
-2
Przykład:
Liczbę
4321
można zapisać jako:
4321 =
4•10
3
+ 3•10
2
+ 2•10
1
+ 1•10
0
= 4000 + 300 + 20 + 1 = 4321
10
Oznacza kod
Przy pomocy n cyfr możemy zapisać p
n
liczb (od 0 do p
n
– 1)
3 października 2012
Wojciech Kucewicz
13
Kod binarny
Kod binarny
W technice cyfrowej najczęściej jest stosowany kod dwójkowy
(binarny)
Oparty jest na dwóch znakach:
0, 1
Podstawa systemu –
p = 2
Przykład
Liczbę
1000011100001
2
można zapisać jako
1•2
12
+ 0•2
11
+ 0•2
10
+ 0•2
9
+ 0•2
8
+
1•2
7
+
1•2
6
+
1•2
5
+ 0•2
4
+ 0•2
3
+ 0•2
2
+
0•2
1
+
1•2
0
=
4096+128+64+32+1
= 4321
10
3 października 2012
Wojciech Kucewicz
14
Kod oktagonalny
Kod oktagonalny
Kod oktagonaly oparty jest na ośmiu znakach:
0, 1, 2, 3, 4, 5, 6, 7
Podstawa systemu –
p = 8
Przykład
Liczbę
10341
8
można zapisać jako
1•8
4
+ 0•8
3
+
3•8
2
+
4•8
1
+
1•8
0
= 4096+192+32+1= 4321
10
3 października 2012
Wojciech Kucewicz
15
Kod heksadecymalny
Kod heksadecymalny
Kod heksadecymalny oparty jest na szesnastu znakach:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Podstawa systemu –
p = 16
Przykład
Liczbę
10EA
16
można zapisać jako
1•16
3
+ 0•16
2
+
14•16
1
+
10•16
0
= 4096+224+1= 4321
10
3 października 2012
Wojciech Kucewicz
16
Kody liczbowe
Kody liczbowe
Kod dziesiętny
Kod binarny
Kod octagonalny
Kod heksadecymalny
0
0
0
0
1
1
1
1
2
10
2
2
3
11
3
3
4
100
4
4
5
101
5
5
6
110
6
6
7
111
7
7
8
1000
10
8
9
1001
11
9
10
1010
12
A
11
1011
13
B
12
1100
14
C
13
1101
15
D
14
1110
16
E
15
1111
17
F
3 października 2012
Wojciech Kucewicz
17
Konwersja liczb między
różnymi kodami
Konwersja liczb między
różnymi kodami
Cyfrowy zapis informacji
Cyfrowy zapis informacji
3 października 2012
Wojciech Kucewicz
18
Kod dziesiętny kod binarny
Kod dziesiętny kod binarny
Zamiana liczby całkowitej
50
10
na binarną:
50
10
= 110010
2
Dzielenie przez
podstawę
Wynik dzielenia
Reszta
Liczba binarna
a
0
a
1
a
2
a
3
a
4
a
5
50/2 =
25
0
0
25/2 =
12
1
1
12/2 =
6
0
0
6/2 =
3
0
0
3/2 =
1
1
1
1/2 =
0
1
1
3 października 2012
Wojciech Kucewicz
19
Mnożenie przez
podstawę
Wynik mnożenia
Reszta
Liczba binarna
a
-1
a
-2
a-
3
Kod dziesiętny kod binarny
Kod dziesiętny kod binarny
Zamiana liczby ułamkowej
0.375
10
na binarną :
0.375
10
= 0.011
2
0,375 • 2 = 0
0,75
0
0,75 • 2 =
1
0,5
1
0,5 • 2 =
1
0
1
3 października 2012
Wojciech Kucewicz
20
Kod dziesiętny kod binarny
Kod dziesiętny kod binarny
Zamiana liczby dziesiętnej
50.375
10
na binarną wykonuje się w
dwóch krokach:
50.375
10
=50 + 0.375 = 110010 + 0.011 = 110010.011
2
1) Konwersja części całkowitej
2) Konwersja części ułamkowej
3 października 2012
Wojciech Kucewicz
21
Mnożenie przez
podstawę
Wynik mnożenia
Reszta
Liczba binarna
a
-1
a
-2
a-
3
a
-4
a
-5
a-
6
Kod dziesiętny kod binarny
Kod dziesiętny kod binarny
Niektóre ułamki można tylko w przybliżeniu przedstawić w postaci
binarnej
np. 0,3
:
0.3
10
= 0,010011….
2
0,3 • 2 =
0
0,6
0
0,6 • 2 =
1
0,2
1
0,2 • 2 =
0
0,4
0
0,4 • 2 =
0
0,8
0
0,8 • 2 =
1
0,6
1
0,6 • 2 =
1
0,2
1
3 października 2012
Wojciech Kucewicz
22
Kod binarny kod oktagonalny
Kod binarny kod oktagonalny
Liczbę binarną należy podzielić na segment 3 elementowe poczynając
od przecinka w obie strony a następnie każdy segment zamienić na
liczbę oktagonalną:
110010.011
2
110 010. 011
2
6 2.
3
8
62.3
8
Liczbę oktagonalną zamieniamy na liczbę binarną postępując
odwrotnie
110010.011
2
110 010. 011
2
6 2.
3
8
62.3
8
3 października 2012
Wojciech Kucewicz
23
Kod binarny kod heksadecymalny
Kod binarny kod heksadecymalny
Liczbę binarną należy podzielić na segment 4 elementowe poczynając
od przecinka w obie strony, a następnie każdy segment zamienić na
liczbę heksadecymalną:
110010.011
2
0011 0010. 0110
2
3 2.
6
16
32.6
16
Liczbę heksadecymalną zamieniamy na liczbę binarną postępując
odwrotnie
110010.011
2
0011 0010. 0110
2
3 2.
6
16
32.6
16
3 października 2012
Wojciech Kucewicz
24
Kolokwium
Kolokwium
Zamień liczbę binarną
110,011
na liczbę
dziesiętną, oktagonalną i heksadecymalną ?
3 października 2012
Wojciech Kucewicz
25
Kod alfanumeryczny
Kod alfanumeryczny
Cyfrowy zapis informacji
Cyfrowy zapis informacji
3 października 2012
Wojciech Kucewicz
26
Kod alfanumeryczny ASCII
Kod alfanumeryczny ASCII
W komputerach musi być jakiś sposób przedstawiania oprócz liczb
także liter i innych symboli. Określenie alfanumeryczny jest
stosowany do tych symboli, które zawierają także cyfry
dziesiętne.
Sposób przyporządkowania odpowiedniego kodu symbolom
alfanumerycznym nazywamy kodem
ASCII
od angielskiej nazwy
dokumentu:
A
merican
S
tandard
C
ode for
I
nformation
I
nterchange
Kod ASCII jest kodem 7-bitowym, często 8 bit wykorzystuje się
do kontroli parzystości lub do kodowania dodatkowych znaków o
numerach od 128 do 255
3 października 2012
Wojciech Kucewicz
27
Kod alfanumeryczny ASCII
Kod alfanumeryczny ASCII
Character
ASCII
(bin)
ASCII
(hex)
Decimal
Octal
A
1000001
41
65
101
B
1000010
42
66
102
C
1000011
43
67
103
…
K
1001011
4B
75
113
a
1100001
61
97
141
…
1
0110001
31
49
61
‘
0100111
27
39
47
Znaki w kodzie ASCII są przyporządkowane liczbom, które można
zapisać w dowolnym kodzie numerycznym.
3 października 2012
Wojciech Kucewicz
28
Kod alfanumeryczny ASCII
Kod alfanumeryczny ASCII
Przykład:
Euro 2012
Wyrażenie
Binarnie
Octagonalnie Heksadecymalnie Decymalnie
E
01000101
105
45
69
u
01110101
165
75
117
r
01110010
162
72
114
o
01101111
157
6F
111
00100000
40
20
32
2
00110010
62
32
50
0
00110000
60
30
48
1
00110001
61
31
49
2
00110010
62
32
50
010001010111010101110010011011110010000000110010001100000011000100110010
3 października 2012
Wojciech Kucewicz
29
Transmisja informacji
Transmisja informacji
1. Dane w kodzie ASCII wprowadzane
są z klawiatury
2. Przemieszczane są w blokach
(bajtach) przy użyciu procesora
3. Gromadzone są w pamięci
3 października 2012
Wojciech Kucewicz
30
Kody BCD
Kody BCD
Cyfrowy zapis informacji
Cyfrowy zapis informacji
3 października 2012
Wojciech Kucewicz
31
Kod BCD 8421
Kod BCD 8421
Cyfra
Kod
BCD8421
Cyfra
Kod
BCD8421
0
0000
5
0101
1
0001
6
0110
2
0010
7
0111
3
0011
8
1000
4
0100
9
1001
W kodzie BCD (ang. Binary coded decimal) każda cyfra liczb dziesiętnej jest
oddzielnie kodowana dwójkowo w postaci 4-bitowego słowa.
Najpopularniejszy jest kod BCD 8421 obejmujący pierwsze 10 liczb z 4-
bitowego naturalnego kodu dwójkowego.
Przykładowo liczba 369
10
będzie zakodowana następująco:
0011 0110 1001
To nie jest liczba 0011 0110 1001 !
3
6
9
3 października 2012
Wojciech Kucewicz
32
Kod BCD Gray’a
Kod BCD Gray’a
Cyfra
Kod
Gray’a
Cyfra
Kod
Gray’a
0
0000
8
1100
1
0001
9
1101
2
0011
10
1111
3
0010
11
1110
4
0110
12
1010
5
0111
13
1011
6
0101
14
1001
7
0100
15
1000
Przykładem kodu BCD jest kod Gray’a.
Kod Gray’a ma taką właściwość, że jego sąsiednie słowa różnią się tylko jednym bitem
3 października 2012
Wojciech Kucewicz
33
Kod z nadmiarem 3 (XS3)
Kod z nadmiarem 3 (XS3)
Cyfra
Kod X3
Cyfra
Kod X3
0
0011
5
1000
1
0100
6
1001
2
0101
7
1010
3
0110
8
1011
4
0111
9
1100
W kodzie BCD (ang. Binary coded decimal) z nadmiarem 3 liczenie zaczyna
się od 0011. Nie występuje cztery 0 lub cztery 1.
Jest to kod samouzupełniający.
3 października 2012
Wojciech Kucewicz
34
Kod 7-segmentowy
Kod 7-segmentowy
Cyfra
Kod 7-segm.
abcdefg
Cyfra
Kod 7-segm.
abcdefg
0
1111110
5
1011011
1
0110000
6
1011111
2
1101101
7
1110000
3
1111001
8
1111111
4
0110011
9
1111011
Kod 7-segmentowy służy do wyświetlania cyfr na wskaźniku 7-segmentowym.
Każda cyfra jest tworzona przez „zapalenie” odpowiednich segmentów
wskaźnika.
a
a
b
b
c
c
d
d
g
g
f
f
e
e
a
a
b
b
c
c
d
d
g
g
f
f
e
e
3 października 2012
Wojciech Kucewicz
35
Zapis liczb dwójkowych
ze znakiem
Zapis liczb dwójkowych
ze znakiem
Cyfrowy zapis informacji
Cyfrowy zapis informacji
3 października 2012
Wojciech Kucewicz
36
Zapis dwójkowy ze znakiem
Zapis dwójkowy ze znakiem
W zbiorze liczb rzeczywistych istnieją liczby ujemne, które oznacza się
znakiem minus (-).
W dwójkowym systemie liczbowym znak liczby może być wprowadzony tylko
w postaci odrębnego
bitu znaku
, którego wartość równa 1 reprezentuje
umownie znak „-”, a wartość 0 odpowiada znakowi „+”.
Istnieją trzy zasadnicze sposoby kodowania liczb dwójkowych ze znakiem:
• znak-moduł (ZM)
• znak-uzupełnienie do 1 (U 1)
• znak-uzupełnienie do 2 (U 2)
3 października 2012
Wojciech Kucewicz
37
Znak-uzupełnienie do 9
Znak-uzupełnienie do 9
Liczba ujemna -53
99 – 53 = 46 uzupełnienie do 9
83 – 53 = 30
83 + 46 =
1
29 29 + 1 = 30
3 października 2012
Wojciech Kucewicz
38
Znak-uzupełnienie do 10
Znak-uzupełnienie do 10
Liczba ujemna -53
100 – 53 = 47 uzupełnienie do 10
83 – 53 = 30
83 + 47 = 130
X
3 października 2012
Wojciech Kucewicz
39
Zapis dwójkowy w kodzie ZM
Zapis dwójkowy w kodzie ZM
Kod znak-moduł (ang. sign-magnitude) został utworzony przez dodanie bitu na
początku każdej liczby reprezentującego znak liczby. Przyjmuje się, że
gdy liczba jest ujemna, to wartość tego bitu jest równa 1, a dalsze bity
reprezentują moduł liczby. Gdy liczba jest dodatnia, to wartość tego
bitu jest równa 0.
Za pomocą n-bitowego słowa (uwzględniając bit znaku) można przedstawić
liczby z zakresu:
-(2
n-1
-1) ≤ L(A) ≤ +(2
n-1
-1)
3 października 2012
Wojciech Kucewicz
40
Zapis dwójkowy ZM
Zapis dwójkowy ZM
-(2
n-1
-1) ≤ L(A) ≤ +(2
n-1
-1)
Np. za pomocą 8-bitowego słowa (1 bajtu) można przedstawiać liczby od -127
do 127.
Liczba
12
będzie miała formę
00001100
Liczba
-12
będzie miała formę
10001100
W zapisie ZM liczba zero może przyjmować dwie formy:
00000000 lub 10000000
Podwójna reprezentacja O może stwarzać problemy przy realizacji
algorytmów arytmetycznych (wada).
3 października 2012
Wojciech Kucewicz
41
Zapis dwójkowy w kodzie U 1
Zapis dwójkowy w kodzie U 1
W kodzie uzupełnienia do 1 (ang. 1’s complement) liczby dodatnie
reprezentowane są jak w kodzie binarnym pod warunkiem, że najbardziej
znaczący bit ma wartość 0. Liczby ujemne na najbardziej znaczącej pozycji
mają 1, a pozostałe bity mają przeciwne wartości niż w przypadku liczby
dodatniej.
Uzupełnieniem liczby N w kodzie U1 jest liczba C:
C
U1
= (2
n
– 1) - N
Za pomocą n-bitowego słowa (uwzględniając bit znaku) można przedstawić
liczby z zakresu:
-(2
n-1
-1) ≤ L(A) ≤ +(2
n-1
-1)
czyli podobnie jak kodzie ZM.
3 października 2012
Wojciech Kucewicz
42
Zapis dwójkowy w kodzie U 1
Zapis dwójkowy w kodzie U 1
Liczba
12
będzie miała formę
00001100
Liczba
-12
będzie miała formę
11110011
Wartość ujemną wylicza się przez odjęcie modułu liczby od 2
n
-1
-12 =
1 1 1 1 1 1 1 1
- 0 0 0 0 1 1 0 0
1 1 1 1 0 0 1 1
Liczba 0 ma także dwie reprezentacje: dodatnią – 00000000
i ujemną - 11111111
3 października 2012
Wojciech Kucewicz
43
Zapis dwójkowy w kodzie U 2
Zapis dwójkowy w kodzie U 2
W kodzie uzupełnienia do 2 (ang. 2’s complement) liczby dodatnie
reprezentowane są jak w kodzie binarnym pod warunkiem, że najbardziej
znaczący bit ma wartość 0. Liczba ujemna X w kodzie U2 reprezentowana
takim samym słowem jak liczba X+1 w kodzie U1.
Uzupełnieniem liczby N w kodzie U2 jest liczba C:
C
U2
= 2
n
– N =
(2
n
– 1) - N
+1 = C
U1
+ 1
Za pomocą n-bitowego słowa (uwzględniając bit znaku) można przedstawić
liczby z zakresu:
-2
n-1
≤ L(A) ≤ +(2
n-1
-1)
3 października 2012
Wojciech Kucewicz
44
Zapis dwójkowy w kodzie U 2
Zapis dwójkowy w kodzie U 2
Np. za pomocą 8-bitowego słowa (1 bajtu) można przedstawiać liczby od -128
do 127.
Liczba
12
będzie miała formę
00001100
Liczba
-12
będzie miała formę
11110100
Wartość ujemną wylicza się przez odjęcie modułu liczby od liczby 2
n
-12 =
1 0 0 0 0 0 0 0 0
- 0 0 0 0 1 1 0 0
1 1 1 1 0 1 0 0
Liczba 0 ma tylko jedną reprezentację: 00000000
3 października 2012
Wojciech Kucewicz
45
Reprezentacja liczb w różnych
zapisach
Reprezentacja liczb w różnych
zapisach
Liczba
dziesiętna
Liczba
heksadecymalna
ZM
U1
U2
-128
80
-
-
1000 0000
-127
81
1111 1111
1000 0000
1000 0001
-64
C0
1100 0000
1101 11111
1100 0000
-16
F0
1001 0000
1110 1111
1111 0000
-2
FE
1000 0010
1111 1101
1111 1110
-1
FF
1000 0001
1111 1110
1111 1111
0
0
0000 0000
1000 0000
0000 0000
1111 1111
0000 0000
1
1
0000 0001
0000 0001
0000 0001
127
7F
0111 1111
0111 1111
0111 1111
3 października 2012
Wojciech Kucewicz
46
Dodawanie
liczb binarnych
ze znakiem
Dodawanie
liczb binarnych
ze znakiem
Cyfrowy zapis informacji
Cyfrowy zapis informacji
3 października 2012
Wojciech Kucewicz
47
Dodawanie liczb w kodzie ZM
Dodawanie liczb w kodzie ZM
Liczby A i B są dodatnie
Liczba A>0 a liczba B<0
Liczba A<0 a liczba B>0
Liczby A i B są ujemne
3 października 2012
Wojciech Kucewicz
48
Dodawanie liczb w kodzie U1
Dodawanie liczb w kodzie U1
Liczby A i B są dodatnie
Liczba A>0 a liczba B<0
Liczba A<0 a liczba B>0
Liczby A i B są ujemne
3 października 2012
Wojciech Kucewicz
49
Dodawanie liczb w kodzie U2
Dodawanie liczb w kodzie U2
Liczby A i B są dodatnie
Liczba A>0 a liczba B<0
Liczba A<0 a liczba B>0
Liczby A i B są ujemne