E1Cyfrowy zapis informacji


24 kwietnia 2013 Wojciech Kucewicz 1
Cyfrowy zapis
Cyfrowy zapis
informacji
informacji
24 kwietnia 2013 Wojciech Kucewicz 2
Bit, Bajt, Słowo
Bit, Bajt, Słowo
24 kwietnia 2013 Wojciech Kucewicz 3
Cyfrowy zapis informacji
Cyfrowy zapis informacji
Bit [ang. binary digit] jest elementem zbioru
dwuelementowego używanym do reprezentowania
informacji. Bit może mieć wartość 1 lub 0.
Bit
1001 1000
MSB  bit najbardziej znaczący
LSB  bit najmniej znaczący
24 kwietnia 2013 Wojciech Kucewicz 4
Cyfrowy zapis informacji
Cyfrowy zapis informacji
10011000
Byte
Bajt (byte) ciąg złożony z 8 bitów. Bajt pozwala na zapisanie
w systemie binarnym 28 liczb (0 -255)
Ciąg 4 bitów nazywamy czasami nible (nibble).
24 kwietnia 2013 Wojciech Kucewicz 5
Cyfrowy zapis informacji
Cyfrowy zapis informacji
1 0 0 1 1 0 0 0 1 0 0 1 1 0 0 0
Word
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ądz jako zakodowany
rozkaz.
24 kwietnia 2013 Wojciech Kucewicz 6
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 7
Cyfrowy zapis informacji
Cyfrowy zapis informacji
Kody liczbowe
Kody liczbowe
24 kwietnia 2013 Wojciech Kucewicz 8
Kody liczbowe
Kody liczbowe
Najbardziej rozpowszechnionymi kodami liczbowymi są kody
naturalne.
Zapis liczb w kodzie naturalnym jest pozycyjny tj. każdy znak ai
zajmuje ściśle określoną pozycję i, której przyporządkowana jest
odpowiednia waga wi = pi, gdzie p jest podstawą kodu liczbowego.
Podstawa kodu określa ilość znaków używanych w kodzie.
24 kwietnia 2013 Wojciech Kucewicz 9
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 & a4 a3 a2 a1 a0 ,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 10
Kod dziesiętny
Kod dziesiętny
Liczba aj & a1 a0 , a-1 a-2
aj" pj + ...+ a1" 101 + a0" 100 + a-1" 10-1 + a-2" 10-2
Przykład:
Liczbę 4321 można zapisać jako:
4321 = 4" 103 + 3" 102 + 2" 101 + 1" 100 = 4000 + 300 + 20 + 1 = 432110
Oznacza kod
Przy pomocy n cyfr możemy zapisać pn liczb (od 0 do pn  1)
24 kwietnia 2013 Wojciech Kucewicz 11
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ę 10000111000012 można zapisać jako
1" 212+ 0" 211+ 0" 210+ 0" 29+ 0" 28+ 1" 27+ 1" 26+ 1" 25 + 0" 24+ 0" 23+ 0" 22+
0" 21+ 1" 20 = 4096+128+64+32+1 = 432110
24 kwietnia 2013 Wojciech Kucewicz 12
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ę 103418 można zapisać jako
1" 84 + 0" 83 + 3" 82 + 4" 81 + 1" 80 = 4096+192+32+1= 432110
24 kwietnia 2013 Wojciech Kucewicz 13
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ę 10EA16 można zapisać jako
1" 163 + 0" 162 + 14" 161 + 10" 160 = 4096+224+1= 432110
24 kwietnia 2013 Wojciech Kucewicz 14
Kody liczbowe
Kody liczbowe
Kod dziesiętny Kod binarny Kod octagonalny Kod heksadecymalny
00 0 0
11 1 1
210 2 2
311 3 3
4100 4 4
5101 5 5
6110 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 15
Cyfrowy zapis informacji
Cyfrowy zapis informacji
Konwersja liczb między
Konwersja liczb między
różnymi kodami
różnymi kodami
24 kwietnia 2013 Wojciech Kucewicz 16
Kod dziesiętny Ł kod binarny
Kod dziesiętny Ł kod binarny
Zamiana liczby całkowitej 5010 na binarną:
Dzielenie przez
Wynik dzielenia Reszta Liczba binarna
podstawę
50/2 = 25 0 Ł a0 0
25/2 = 12 1 Ł a1 1
12/2 = 6 0 Ł a2 0
a3
6/2 = 3 0 Ł 0
a4
3/2 = 1 1 Ł 1
a5
1/2 = 0 1 Ł 1
5010 = 1100102
24 kwietnia 2013 Wojciech Kucewicz 17
Kod dziesiętny Ł kod binarny
Kod dziesiętny Ł kod binarny
Zamiana liczby ułamkowej 0,37510 na binarną :
Mnożenie przez
Wynik mnożenia Reszta Liczba binarna
podstawę
0,375 " 2 = 0 0,75 Ł a-1 0
0,75 " 2 = 1 0,5 Ł a-2 1
0,5 " 2 = 1 0 Ł a-3 1
0,37510 = 0.0112
24 kwietnia 2013 Wojciech Kucewicz 18
Kod dziesiętny Ł kod binarny
Kod dziesiętny Ł kod binarny
Zamiana liczby dziesiętnej 50,37510 na binarną wykonuje się w
dwóch krokach:
1) Konwersja części całkowitej 2) Konwersja części ułamkowej
50,37510 =50 + 0,375 = 110010 + 0,011 = 110010,0112
24 kwietnia 2013 Wojciech Kucewicz 19
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:
Mnożenie przez
Wynik mnożenia Reszta Liczba binarna
podstawę
0,3 " 2 = 0 0,6 Ł a-1 0
0,6 " 2 = 1 0,2 Ł a-2 1
0,2 " 2 = 0 0,4 Ł a-3 0
0,4 " 2 = 0 0,8 Ł a-4 0
a-5
0,8 " 2 = 1 0,6 Ł 1
a-6
0,6 " 2 = 1 0,2 Ł 1
0,310 = 0,010011& .2
24 kwietnia 2013 Wojciech Kucewicz 20
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,0112 110010,0112
110 010, 0112 110 010, 0112
6 2, 38
6 2, 38
62,38
62,38
Liczbę oktagonalną zamieniamy na liczbę binarną postępując
odwrotnie
24 kwietnia 2013 Wojciech Kucewicz 21
Ł
Ł
Ł
Ł
Ł
Ł
Ł
Ł
Ł
Ł
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,0112 110010,0112
0011 0010, 01102
0011 0010, 01102
3 2, 616
3 2, 616
32,616
32,616
Liczbę heksadecymalną zamieniamy na liczbę binarną postępując
odwrotnie
24 kwietnia 2013 Wojciech Kucewicz 22
Ł
Ł
Ł
Ł
Ł
Ł
Ł
Ł
Ł
Ł
Cyfrowy zapis informacji
Cyfrowy zapis informacji
Kod alfanumeryczny
Kod alfanumeryczny
24 kwietnia 2013 Wojciech Kucewicz 23
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: American Standard Code for Information Interchange.
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 24
Kod alfanumeryczny ASCII
Kod alfanumeryczny ASCII
Znaki w kodzie ASCII są przyporządkowane liczbom, które można
zapisać w dowolnym kodzie numerycznym.
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
24 kwietnia 2013 Wojciech Kucewicz 25
Kod alfanumeryczny ASCII
Kod alfanumeryczny ASCII
Przykład:
Wyrażenie Binarnie Octagonalnie Heksadecymalnie Decymalnie
Euro 2012
01000101 105 45 69
E
01110101 165 75 117
u
01110010 162 72 114
r
01101111 157 6F 111
o
00100000 40 20 32
00110010 62 32 50
2
00110000 60 30 48
0
00110001 61 31 49
1
00110010 62 32 50
2
010001010111010101110010011011110010000000110010001100000011000100110010
24 kwietnia 2013 Wojciech Kucewicz 26
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 27
Cyfrowy zapis informacji
Cyfrowy zapis informacji
Kod Gray a
Kod Gray a
24 kwietnia 2013 Wojciech Kucewicz 28
Kod BCD Gray a
Kod BCD Gray a
L. bin. Kod Gray a Kod Gray a
L. L. bin
L. dzies.
dzies. Bn& Bi& B0 Gn& Gi& G0
Bn& Bi& B0 Gn& Gi& G0
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:
Gn = Bn Gi = (Bi + Bi+1) mod. 2
24 kwietnia 2013 Wojciech Kucewicz 29
Cyfrowy zapis informacji
Cyfrowy zapis informacji
Kody BCD
Kody BCD
24 kwietnia 2013 Wojciech Kucewicz 30
Kod BCD 8421
Kod BCD 8421
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.
Kod Kod
Cyfra Cyfra
BCD8421 BCD8421
0 0000 5 0101
1 0001 6 0110
2 0010 7 0111
3 0011 8 1000
4010091001
Przykładowo liczba 36910 będzie zakodowana następująco:
0011 0110 1001 To nie jest liczba 0011 0110 1001 !
36 9
24 kwietnia 2013 Wojciech Kucewicz 31
Kod Aikena
Kod Aikena
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.
Kod Kod
Cyfra Cyfra
Aikena Aikena
0 0000 5 1011
1 0001 6 1100
2 0010 7 1101
3 0011 8 1110
4 0100 9 1111
24 kwietnia 2013 Wojciech Kucewicz 32
Kod z nadmiarem 3 (XS3)
Kod z nadmiarem 3 (XS3)
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.
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
24 kwietnia 2013 Wojciech Kucewicz 33
Kod 1 z 10
Kod 1 z 10
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
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
24 kwietnia 2013 Wojciech Kucewicz 34
Kod 7-segmentowy
Kod 7-segmentowy
Kod 7-segmentowy służy do wyświetlania cyfr na wskazniku 7-segmentowym.
Każda cyfra jest tworzona przez  zapalenie odpowiednich segmentów
wskaznika.
a
a
a
a
Kod 7-segm. Kod 7-segm.
Cyfra Cyfra
abcdefg abcdefg
f b
f b
f b
f b
0 1111110 5 1011011
g
g
g
g
1 0110000 6 1011111
e c
e c
2 1101101 7 1110000
e c
e c
3 1111001 8 1111111
d
d
d
d
4 0110011 9 1111011
24 kwietnia 2013 Wojciech Kucewicz 35
Cyfrowy zapis informacji
Cyfrowy zapis informacji
Zapis liczb dwójkowych
Zapis liczb dwójkowych
ze znakiem
ze znakiem
24 kwietnia 2013 Wojciech Kucewicz 36
Liczby naturalne
Liczby naturalne
L. dzies. L. binarna
1111 + 1 = 10000
15 + 1 = ?
0 0000
1 0001
0100
2 0010
0011 0101
3 0011
+4
+4
0010 0110
+3 +5
+3 +5
40100
+2 +6
+2 +6
50101
0001 0111
6 0110
+1 +7
+1 +7
70111
0 8
0 8
0000 1000
8 1000
1
9 1001
15 9
15 9
10 1010
1111 1001
14 10
14 10
11 1011
13 11
13 11
12 1100
12
12
1110 1010
13 1101
1101 1011
14 1110
1100
24 kwietnia 2013
15 1111
Wojciech Kucewicz 37
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 38
Zapis dwójkowy ze znakiem
Zapis dwójkowy ze znakiem
L. dzies. L. binarna Znak
0100
0 0000
0011 0101
1 0001
0010 0110
2 0010
3 0011
0001 0111
40100
+
50101
6 0110
0000 1000
70111
8 1000
1111 1001
9 1001
10 1010
1110 1010
11 1011
1101 1011
12 1100
-
1100
13 1101
14 1110
15 1111
24 kwietnia 2013 Wojciech Kucewicz 39
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 40
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 41
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 42
Zapis dwójkowy w kodzie ZM
Zapis dwójkowy w kodzie ZM
L. dzies. L. binarna L. całko.
0 0000 0
0100
0011 0101
1 0001 1
2 0010 2
0010 +4 0110
+4
+3 +5
+3 +5
3 0011 3
+2 +6
+2 +6
401004
0001 0111
+1 +7
+1 +7
501015
601106
0 -0
0 -0
0000 1000
7 0111 7
8 1000 -0
-7 -1
-7 -1
9 1001 -1
1111 1001
-6 -2
-6 -2
10 1010 -2
-5 -3
-5 -3
11 1011 -3
-4
-4
1110 1010
12 1100 -4
1101 1011
13 1101 -5 1100
14 1110 -6
15 1111 -7
24 kwietnia 2013 Wojciech Kucewicz 43
Zapis dwójkowy ZM
Zapis dwójkowy ZM
Zakres liczbowy zależy od ilości bitów. Dla n  bitów wynosi
-(2n-1-1) d" L(A) d" +(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ę 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 44
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:
CU1 = (2n  1)  N
np. dla liczby N = 12 w formacie 8-bitowym, liczba  12U1 wynosi:
(2n  1)
1 1 1 1 1 1 1 1
N
- 0 0 0 0 1 1 0 0
1 1 1 1 0 0 1 1- NU1
45
24 kwietnia 2013 Wojciech Kucewicz
Zapis dwójkowy w kodzie U 1
Zapis dwójkowy w kodzie U 1
L. dzies. L. binarna L. całko.
0 0000 0
0100
0011 0101
1 0001 1
2 0010 2
0010 +4 0110
+4
+3 +5
+3 +5
3 0011 3
+2 +6
+2 +6
401004
0001 0111
+1 +7
+1 +7
501015
601106
0 -7
0 -7
0000 1000
7 0111 7
8 1000 -7
-0 -6
-0 -6
9 1001 -6
1111 1001
-1 -5
-1 -5
10 1010 -5
-2 -4
-2 -4
11 1011 -4
-3
-3
1110 1010
12 1100 -3
1101 1011
13 1101 -2 1100
14 1110 -1
15 1111 -0
24 kwietnia 2013 Wojciech Kucewicz 46
24 kwietnia 2013 Wojciech Kucewicz 46
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) d" L(A) d" +(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
Liczbę ujemną w formacie U1 uzyskuje się przez zanegowanie wszystkich
bitów liczby dodatniej
Liczba 0 ma także dwie reprezentacje:
" dodatnią  00000000
" ujemną - 11111111
24 kwietnia 2013 Wojciech Kucewicz 47
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:
CU2 = 2n  N = (2n  1) - N +1 = CU1 + 1
np. dla liczby N = 12 w formacie 8-bitowym, liczba  12U2 wynosi:
1 0 0 0 0 0 0 0 0
2n
- 0 0 0 0 1 1 0 0 N
1 1 1 1 0 1 0 0- NU2
24 kwietnia 2013 Wojciech Kucewicz 48
Zapis dwójkowy w kodzie U 2
Zapis dwójkowy w kodzie U 2
L. dzies. L. binarna L. całko.
0 0000 0
0100
0011 0101
1 0001 1
2 0010 2
0010 +4 0110
+4
+3 +5
+3 +5
3 0011 3
+2 +6
+2 +6
401004
0001 0111
+1 +7
+1 +7
501015
601106
0 -8
0 -8
0000 1000
7 0111 7
8 1000 -8
-1 -7
-1 -7
9 1001 -7
1111 1001
-2 -6
-2 -6
10 1010 -6
-3 -5
-3 -5
11 1011 -5
-4
-4
1110 1010
12 1100 -4
1101 1011
13 1101 -3 1100
14 1110 -2
15 1111 -1
24 kwietnia 2013 Wojciech Kucewicz 49
24 kwietnia 2013 Wojciech Kucewicz 49
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) d" L(A) d" +(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
Liczbę ujemną w formacie U2 uzyskuje się przez zanegowanie wszystkich
bitów liczby dodatniej i dodanie 1
Liczba 0 ma reprezentację: 00000000
24 kwietnia 2013 Wojciech Kucewicz 50
Reprezentacja liczb w różnych
Reprezentacja liczb w różnych
zapisach
zapisach
Liczba Liczba
ZM U1 U2
dziesiętna heksadecymalna
-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
0000 0000 0000 0000
00 0000 0000
1000 0000 1111 1111
1 1 0000 0001 0000 0001 0000 0001
127 7F 0111 1111 0111 1111 0111 1111
24 kwietnia 2013 Wojciech Kucewicz 51
Dodawanie
Dodawanie
liczb binarnych
liczb binarnych
ze znakiem
ze znakiem
24 kwietnia 2013 Wojciech Kucewicz 52
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 53
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 54
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 55
Liczby
Liczby
zmiennoprzecinkowe
zmiennoprzecinkowe
24 kwietnia 2013 Wojciech Kucewicz 56
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 57
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 * pW
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 * 104
B = 0,5579 * 10-3
24 kwietnia 2013 Wojciech Kucewicz 58
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 * 100000 d" L d" 0.9999 * 109999
Liczby binarne można przedstawiać w kodzie ZM, U1 lub U2
0,0000 * 20000 d" L d" 0.1111 * 21111
24 kwietnia 2013 Wojciech Kucewicz 59
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*21000 i B=0,1011*20101 wykonujemy
następująco:
1000  0101 = 0011 (3)
B=0,0001011
011
A+B = (0,1101000 + 0,0001011)*21000 =0,1111011 *21000
24 kwietnia 2013 Wojciech Kucewicz 60
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:
CU2 = 2n  N = (2n  1) - N +1 = CU1 + 1
Za pomocą n-bitowego słowa (uwzględniając bit znaku) można przedstawić
liczby z zakresu:
-2n-1 d" L(A) d" +(2n-1 -1)
24 kwietnia 2013 Wojciech Kucewicz 61
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 2n
-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 62
Reprezentacja liczb w różnych
Reprezentacja liczb w różnych
zapisach
zapisach
Liczba Liczba
ZM U1 U2
dziesiętna heksadecymalna
-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
0000 0000 0000 0000
00 0000 0000
1000 0000 1111 1111
1 1 0000 0001 0000 0001 0000 0001
127 7F 0111 1111 0111 1111 0111 1111
24 kwietnia 2013 Wojciech Kucewicz 63
Dodawanie
Dodawanie
liczb binarnych
liczb binarnych
ze znakiem
ze znakiem
24 kwietnia 2013 Wojciech Kucewicz 64
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 65
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 66
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 67
Liczby
Liczby
zmiennoprzecinkowe
zmiennoprzecinkowe
24 kwietnia 2013 Wojciech Kucewicz 68
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 69
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 * pW
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 * 104
B = 0,5579 * 10-3
24 kwietnia 2013 Wojciech Kucewicz 70
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 * 100000 d" L d" 0.9999 * 109999
Liczby binarne można przedstawiać w kodzie ZM, U1 lub U2
0,0000 * 20000 d" L d" 0.1111 * 21111
24 kwietnia 2013 Wojciech Kucewicz 71
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*21000 i B=0,1011*20101 wykonujemy
następująco:
1000  0101 = 0011 (3)
B=0,0001011
011
A+B = (0,1101000 + 0,0001011)*21000 =0,1111011 *21000
24 kwietnia 2013 Wojciech Kucewicz 72


Wyszukiwarka