24 kwietnia 2013
Wojciech Kucewicz
1
24 kwietnia 2013
Wojciech Kucewicz
2
Cyfrowy zapis
informacji
Cyfrowy zapis
informacji
24 kwietnia 2013
Wojciech Kucewicz
3
Bit, Bajt, Słowo
Bit, Bajt, Słowo
24 kwietnia 2013
Wojciech Kucewicz
4
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
24 kwietnia 2013
Wojciech Kucewicz
5
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)
Ciąg 4 bitów nazywamy czasami
nible (nibble).
Byte
24 kwietnia 2013
Wojciech Kucewicz
6
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
24 kwietnia 2013
Wojciech Kucewicz
7
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
24 kwietnia 2013
Wojciech Kucewicz
8
Kody liczbowe
Kody liczbowe
Cyfrowy zapis informacji
Cyfrowy zapis informacji
24 kwietnia 2013
Wojciech Kucewicz
9
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.
24 kwietnia 2013
Wojciech Kucewicz
10
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.
24 kwietnia 2013
Wojciech Kucewicz
11
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)
24 kwietnia 2013
Wojciech Kucewicz
12
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
24 kwietnia 2013
Wojciech Kucewicz
13
Kod oktagonalny
Kod oktagonalny
Kod oktagonalny 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
24 kwietnia 2013
Wojciech Kucewicz
14
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
24 kwietnia 2013
Wojciech Kucewicz
15
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
24 kwietnia 2013
Wojciech Kucewicz
16
Konwersja liczb między
różnymi kodami
Konwersja liczb między
różnymi kodami
Cyfrowy zapis informacji
Cyfrowy zapis informacji
24 kwietnia 2013
Wojciech Kucewicz
17
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
24 kwietnia 2013
Wojciech Kucewicz
18
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
24 kwietnia 2013
Wojciech Kucewicz
19
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
24 kwietnia 2013
Wojciech Kucewicz
20
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
24 kwietnia 2013
Wojciech Kucewicz
21
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
24 kwietnia 2013
Wojciech Kucewicz
22
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
24 kwietnia 2013
Wojciech Kucewicz
23
Kod alfanumeryczny
Kod alfanumeryczny
Cyfrowy zapis informacji
Cyfrowy zapis informacji
24 kwietnia 2013
Wojciech Kucewicz
24
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
stosowane 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 został zaproponowany w roku 1968.
Kod ASCII jest kodem 7-bitowym, często 8 bit wykorzystuje się do
kontroli parzystości.
W latach 80-tych powstał standard
ISO 8859 (Extended ASCII),
który definiuje dodatkowe 128 znaków charakterystycznych dla
różnych języków.
24 kwietnia 2013
Wojciech Kucewicz
25
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.
24 kwietnia 2013
Wojciech Kucewicz
26
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
24 kwietnia 2013
Wojciech Kucewicz
27
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
24 kwietnia 2013
Wojciech Kucewicz
28
Kod Gray’a
Kod Gray’a
Cyfrowy zapis informacji
Cyfrowy zapis informacji
24 kwietnia 2013
Wojciech Kucewicz
29
Kod BCD Gray’a
Kod BCD Gray’a
L.
dzies.
L. bin.
B
n
…B
i
…B
0
Kod Gray’a
G
n
…G
i
…G
0
L. dzies.
L. bin
B
n
…B
i
…B
0
Kod Gray’a
G
n
…G
i
…G
0
0
0000
0000
8
1000
1100
1
0001
0001
9
1001
1101
2
0010
0011
10
1010
1111
3
0011
0010
11
1011
1110
4
0100
0110
12
1100
1010
5
0101
0111
13
1101
1011
6
0110
0101
14
1110
1001
7
0111
0100
15
1111
1000
Kod Gray’a ma taką właściwość, że jego sąsiednie słowa różnią się tylko
jednym bitem:
G
n
= B
n
G
i
= (B
i
+ B
i+1
) mod. 2
24 kwietnia 2013
Wojciech Kucewicz
30
Kody BCD
Kody BCD
Cyfrowy zapis informacji
Cyfrowy zapis informacji
24 kwietnia 2013
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
24 kwietnia 2013
Wojciech Kucewicz
32
Kod Aikena
Kod Aikena
Cyfra
Kod
Aikena
Cyfra
Kod
Aikena
0
0000
5
1011
1
0001
6
1100
2
0010
7
1101
3
0011
8
1110
4
0100
9
1111
W kodzie BCD (ang. Binary coded decimal) Aikena waga bitów jest 2-4-2-1.
Uzupełnienie do 1 liczb binarnych w tym kodzie daje uzupełnienie do 9
odpowiednich liczb dziesiętnych.
Np. 4 0100 U1=1011 U9=2+2+1=5
Kod z taką właściwością nazywamy kodem samouzupełniającym.
24 kwietnia 2013
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.
24 kwietnia 2013
Wojciech Kucewicz
34
Kod 1 z 10
Kod 1 z 10
Cyfra
Kod 1z10
Cyfra
Kod 1z10
0
00000000001
5
0000010000
1
00000000010
6
0001000000
2
00000000100
7
0010000000
3
0000001000
8
0100000000
4
0000010000
9
1000000000
Kod 1 z 10 jest przykładem kodu k z n. Koncepcyjnie jest to kod do
wprowadzania cyfr kodu dziesiętnego przez 10 dziesięć wzajemnie
wyłączalnych klawiszy. Stosowany jest powszechnie w relacjach człowiek-
układ cyfrowy.
W technice cyfrowej używa się określenia koder, jako nazwy układu
służącego do przetwarzania liczb w kodzie 1 z 10
24 kwietnia 2013
Wojciech Kucewicz
35
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
24 kwietnia 2013
Wojciech Kucewicz
36
Zapis liczb dwójkowych
ze znakiem
Zapis liczb dwójkowych
ze znakiem
Cyfrowy zapis informacji
Cyfrowy zapis informacji
24 kwietnia 2013
Wojciech Kucewicz
37
Liczby naturalne
Liczby naturalne
0100 0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0000
0001
0010
0011
+4
+4
+5
+5
+6
+6
+7
+7
88
99
10
10
11
11
12
12
13
13
14
14
15
15
00
+1
+1
+2
+2
+3
+3
L. dzies.
L. binarna
0
0000
1
0001
2
0010
3
0011
4
0100
5
0101
6
0110
7
0111
8
1000
9
1001
10
1010
11
1011
12
1100
13
1101
14
1110
15
1111
15 + 1 = ?
1111 + 1 =
1
0000
1
24 kwietnia 2013
Wojciech Kucewicz
38
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.
Bitem znaku jest zawsze bit najbardziej
znaczący.
Jeżeli bit znaku jest równy 1, to reprezentuje umownie znak „-”,
natomiast gdy jest równy 0 odpowiada znakowi „+”.
24 kwietnia 2013
Wojciech Kucewicz
39
Zapis dwójkowy ze znakiem
Zapis dwójkowy ze znakiem
L. dzies.
L. binarna
Znak
0
0000
+
1
0001
2
0010
3
0011
4
0100
5
0101
6
0110
7
0111
8
1000
-
9
1001
10
1010
11
1011
12
1100
13
1101
14
1110
15
1111
0100 0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0000
0001
0010
0011
24 kwietnia 2013
Wojciech Kucewicz
40
Zapis dwójkowy ze znakiem
Zapis dwójkowy ze znakiem
Istnieją trzy zasadnicze sposoby kodowania liczb
dwójkowych ze znakiem:
• znak-moduł (ZM)
• znak-uzupełnienie do 1 (U1)
• znak-uzupełnienie do 2 (U2)
24 kwietnia 2013
Wojciech Kucewicz
41
Uzupełnienie do 9
Uzupełnienie do 9
Odejmowanie
83 – 53 = 83 + (-53) = 30
Liczba ujemna -53
99 – 53 = 46 uzupełnienie do 9
83 + 46 = 129 29 + 1 = 30
24 kwietnia 2013
Wojciech Kucewicz
42
Uzupełnienie do 10
Uzupełnienie do 10
Odejmowanie
83 – 53 = 83 + (-53) = 30
Liczba ujemna -53
100 – 53 = 47 uzupełnienie do 10
83 + 47 = 130
X
24 kwietnia 2013
Wojciech Kucewicz
43
Zapis dwójkowy w kodzie ZM
Zapis dwójkowy w kodzie ZM
L. dzies.
L. binarna
L. całko.
0
0000
0
1
0001
1
2
0010
2
3
0011
3
4
0100
4
5
0101
5
6
0110
6
7
0111
7
8
1000
-0
9
1001
-1
10
1010
-2
11
1011
-3
12
1100
-4
13
1101
-5
14
1110
-6
15
1111
-7
0100 0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0000
0001
0010
0011
+4
+4
+5
+5
+6
+6
+7
+7
-0
-0
-1
-1
-2
-2
-3
-3
-4
-4
-5
-5
-6
-6
-7
-7
00
+1
+1
+2
+2
+3
+3
24 kwietnia 2013
Wojciech Kucewicz
44
Zapis dwójkowy ZM
Zapis dwójkowy ZM
Zakres liczbowy zależy od ilości bitów. Dla n –bitów wynosi
-(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).
24 kwietnia 2013
Wojciech Kucewicz
45
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
np. dla liczby N = 12 w formacie 8-bitowym, liczba –12
U1
wynosi:
1 1 1 1 1 1 1 1
- 0 0 0 0 1 1 0 0
1 1 1 1 0 0 1 1
(2
n
– 1)
- N
U1
N
24 kwietnia 2013
Wojciech Kucewicz
46
Zapis dwójkowy w kodzie U 1
Zapis dwójkowy w kodzie U 1
24 kwietnia 2013
Wojciech Kucewicz
46
L. dzies.
L. binarna
L. całko.
0
0000
0
1
0001
1
2
0010
2
3
0011
3
4
0100
4
5
0101
5
6
0110
6
7
0111
7
8
1000
-7
9
1001
-6
10
1010
-5
11
1011
-4
12
1100
-3
13
1101
-2
14
1110
-1
15
1111
-0
0100 0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0000
0001
0010
0011
+4
+4
+5
+5
+6
+6
+7
+7
-7
-7
-6
-6
-5
-5
-4
-4
-3
-3
-2
-2
-1
-1
-0
-0
00
+1
+1
+2
+2
+3
+3
24 kwietnia 2013
Wojciech Kucewicz
47
Zapis dwójkowy w kodzie U 1
Zapis dwójkowy w kodzie U 1
Zakres liczbowy zależy od ilości bitów. Dla n –bitów wynosi
-(2n-1-1) ≤ L(A) ≤ +(2n-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ę
11110011
Liczba 0 ma także dwie reprezentacje:
•
dodatnią – 00000000
•
ujemną - 11111111
Liczbę ujemną w formacie U
1
uzyskuje się przez zanegowanie wszystkich
bitów liczby dodatniej
24 kwietnia 2013
Wojciech Kucewicz
48
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
np. dla liczby N = 12 w formacie 8-bitowym, liczba –12
U2
wynosi:
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
2
n
- N
U2
N
24 kwietnia 2013
Wojciech Kucewicz
49
Zapis dwójkowy w kodzie U 2
Zapis dwójkowy w kodzie U 2
24 kwietnia 2013
Wojciech Kucewicz
49
L. dzies.
L. binarna
L. całko.
0
0000
0
1
0001
1
2
0010
2
3
0011
3
4
0100
4
5
0101
5
6
0110
6
7
0111
7
8
1000
-8
9
1001
-7
10
1010
-6
11
1011
-5
12
1100
-4
13
1101
-3
14
1110
-2
15
1111
-1
0100 0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0000
0001
0010
0011
+4
+4
+5
+5
+6
+6
+7
+7
-8
-8
-7
-7
-6
-6
-5
-5
-4
-4
-3
-3
-2
-2
-1
-1
00
+1
+1
+2
+2
+3
+3
24 kwietnia 2013
Wojciech Kucewicz
50
Zapis dwójkowy w kodzie U 2
Zapis dwójkowy w kodzie U 2
Zakres liczbowy zależy od ilości bitów. Dla n –bitów wynosi
-(2n-1-1) ≤ L(A) ≤ +(2n-1 -1)
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
Liczba 0 ma reprezentację:
00000000
Liczbę ujemną w formacie U
2
uzyskuje się przez zanegowanie wszystkich
bitów liczby dodatniej i dodanie 1
24 kwietnia 2013
Wojciech Kucewicz
51
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
24 kwietnia 2013
Wojciech Kucewicz
52
Dodawanie
liczb binarnych
ze znakiem
Dodawanie
liczb binarnych
ze znakiem
24 kwietnia 2013
Wojciech Kucewicz
53
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
24 kwietnia 2013
Wojciech Kucewicz
54
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
24 kwietnia 2013
Wojciech Kucewicz
55
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
24 kwietnia 2013
Wojciech Kucewicz
56
Liczby
zmiennoprzecinkowe
Liczby
zmiennoprzecinkowe
24 kwietnia 2013
Wojciech Kucewicz
57
Liczby zmiennoprzecinkowe
Liczby zmiennoprzecinkowe
Omawiane do tej pory liczby były przedstawiane w tak zwanej
reprezentacji stałoprzecinkowej (fixed-point notation), w której
położenie kropki jest stałe niezależne od wielkości liczb.
Przykładowo format 8-bitowy liczby można zapisać następująco:
XXXX.XXXX
Jeżeli liczby wprowadzone do tego formatu znacznie się od siebie
różnią np.
A=1234,00 i B=0,0005579
to wiąże się to z dużym błędem
obcięcia liczby B:
A = 1234,0000
B = 0000,0005
24 kwietnia 2013
Wojciech Kucewicz
58
Liczby zmiennoprzecinkowe
Liczby zmiennoprzecinkowe
Aby uniknąć błędów zapisu reprezentacji stałoprzecinkowej (fixed
point notation), stosuje się również zmiennoprzecinkowy zapis liczb
(floating-poit notation)
Reprezentację zmiennoprzecinkową liczby L definiuje się jako
złożenie dwóch słów M i W
L = M * p
W
gdzie
słowo M (mantysa)
– liczba ułamkowa ze znakiem
słowo W (wykładnik) – liczba
całkowita ze znakiem
p
- podstawa kodu zastosowane do zapisu M i W
Przykładowo liczby
A=1234,0 i B=0,0005579
można zapisać:
A = 0,1234 * 10
4
B = 0,5579 * 10
-3
24 kwietnia 2013
Wojciech Kucewicz
59
Liczby zmiennoprzecinkowe
Liczby zmiennoprzecinkowe
Istotną zaletą reprezentacji zmiennoprzecinkowej jest duży zakres
liczb, które można w ten sposób przedstawić.
W przypadku 4 bitowej mantysy i wykładnika, można przedstawić
liczby w zakresie:
0,0000 * 10
0000
≤ L ≤ 0.9999 * 10
9999
Liczby binarne można przedstawiać w kodzie ZM, U1 lub U2
0,0000 * 2
0000
≤ L ≤ 0.1111 * 2
1111
24 kwietnia 2013
Wojciech Kucewicz
60
Liczby zmiennoprzecinkowe
Liczby zmiennoprzecinkowe
Dodawanie liczb zmiennoprzecinkowych wymaga najpierw wyrównania
wykładników, a następnie właściwa operację dodawania wykonuje się
na mantysach jak na stałoprzecinkowych liczbach ze znakiem.
W celu wyrównania wykładników mniejszy z nich odejmuje się od
większego i mantysę związaną z tym mniejszym przesuwa się w prawo
o liczbę pozycji równą otrzymanej różnicy. Wynik jest sumą mantys
z większym wykładnikiem.
Dodanie liczb binarnych A=0,1101*2
1000
i B=0,1011*2
0101
wykonujemy
następująco:
1000 – 0101 = 0011
(3)
B=0,
000
1011
A+B = (0,1101000 + 0,0001011)*2
1000
=0,1111
011
*2
1000
011
24 kwietnia 2013
Wojciech Kucewicz
61
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)
24 kwietnia 2013
Wojciech Kucewicz
62
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
24 kwietnia 2013
Wojciech Kucewicz
63
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
24 kwietnia 2013
Wojciech Kucewicz
64
Dodawanie
liczb binarnych
ze znakiem
Dodawanie
liczb binarnych
ze znakiem
24 kwietnia 2013
Wojciech Kucewicz
65
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
24 kwietnia 2013
Wojciech Kucewicz
66
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
24 kwietnia 2013
Wojciech Kucewicz
67
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
24 kwietnia 2013
Wojciech Kucewicz
68
Liczby
zmiennoprzecinkowe
Liczby
zmiennoprzecinkowe
24 kwietnia 2013
Wojciech Kucewicz
69
Liczby zmiennoprzecinkowe
Liczby zmiennoprzecinkowe
Omawiane do tej pory liczby były przedstawiane w tak zwanej
reprezentacji stałoprzecinkowej (fixed-point notation), w której
położenie kropki jest stałe niezależne od wielkości liczb.
Przykładowo format 8-bitowy liczby można zapisać następująco:
XXXX.XXXX
Jeżeli liczby wprowadzone do tego formatu znacznie się od siebie
różnią np.
A=1234,00 i B=0,0005579
to wiąże się to z dużym błędem
obcięcia liczby B:
A = 1234,0000
B = 0000,0005
24 kwietnia 2013
Wojciech Kucewicz
70
Liczby zmiennoprzecinkowe
Liczby zmiennoprzecinkowe
Aby uniknąć błędów zapisu reprezentacji stałoprzecinkowej (fixed
point notation), stosuje się również zmiennoprzecinkowy zapis liczb
(floating-poit notation)
Reprezentację zmiennoprzecinkową liczby L definiuje się jako
złożenie dwóch słów M i W
L = M * p
W
gdzie
słowo M (mantysa)
– liczba ułamkowa ze znakiem
słowo W (wykładnik) – liczba
całkowita ze znakiem
p
- podstawa kodu zastosowane do zapisu M i W
Przykładowo liczby
A=1234,0 i B=0,0005579
można zapisać:
A = 0,1234 * 10
4
B = 0,5579 * 10
-3
24 kwietnia 2013
Wojciech Kucewicz
71
Liczby zmiennoprzecinkowe
Liczby zmiennoprzecinkowe
Istotną zaletą reprezentacji zmiennoprzecinkowej jest duży zakres
liczb, które można w ten sposób przedstawić.
W przypadku 4 bitowej mantysy i wykładnika, można przedstawić
liczby w zakresie:
0,0000 * 10
0000
≤ L ≤ 0.9999 * 10
9999
Liczby binarne można przedstawiać w kodzie ZM, U1 lub U2
0,0000 * 2
0000
≤ L ≤ 0.1111 * 2
1111
24 kwietnia 2013
Wojciech Kucewicz
72
Liczby zmiennoprzecinkowe
Liczby zmiennoprzecinkowe
Dodawanie liczb zmiennoprzecinkowych wymaga najpierw wyrównania
wykładników, a następnie właściwa operację dodawania wykonuje się
na mantysach jak na stałoprzecinkowych liczbach ze znakiem.
W celu wyrównania wykładników mniejszy z nich odejmuje się od
większego i mantysę związaną z tym mniejszym przesuwa się w prawo
o liczbę pozycji równą otrzymanej różnicy. Wynik jest sumą mantys
z większym wykładnikiem.
Dodanie liczb binarnych A=0,1101*2
1000
i B=0,1011*2
0101
wykonujemy
następująco:
1000 – 0101 = 0011
(3)
B=0,
000
1011
A+B = (0,1101000 + 0,0001011)*2
1000
=0,1111
011
*2
1000
011