Reprezentacje liczb w komputerze

advertisement
3. Reprezentacje znaków w komputerze
3.1. Liczby
Kodowanie liczb opiera się na ich konwersji na system binarny. Nie mniej trzeba jeszcze pamiętać, że dana liczba zajmuje
z góry określoną liczbę bitów oraz określić jak zapisać liczby ujemne i ułamki.
3.1.1. Liczby naturalne.
Kodowanie liczby naturalnej na n-bitach polega na zapisie liczby w systemie (2) i uzupełnieniu jej od lewej strony
zerami do n pozycji.
Np. Liczba 26=11010(2) na 8 bitach:
0
0
0
1
1
0
1
0
3.1.2. Liczby całkowite.

Kod ZM (kod znak-moduł)
Wszystkie bity poza najstarszym mają takie samo znaczenie jak w naturalnym kodzie binarnym. W kodzie ZM
najstarszy bit jest bitem znaku. Jeżeli ma on wartość 0 to dana liczba jest dodatnia, jeżeli 1 to liczba jest ujemna.
W związku z tym występują dwie reprezentacje zera. Kłopotliwe jest wykonywanie działań w ZM
26 
0 0 0 1 1 0 1 0
-26 
1 0 0 1 1 0 1 0

Kod U2 (kod uzupełnień do 2)
Kodowanie U2 jest obecnie najpopularniejszą reprezentacją liczb całkowitych (oraz ułamkowych przedstawionych
w formacie stałoprzecinkowym). Operacje dodawania i odejmowania są w nim wykonywane tak samo jak dla liczb
binarnych bez znaku. Z tego też powodu oszczędza się na kodach rozkazów procesora. Liczba dodatnia całkowita
jest zapisana tak samo jak w ZM.
W kodzie U2 najstarszy bit n-bitowej reprezentacji ma wagę -2n-1, a pozostałe tradycyjnie kolejno +2n-2, +2n-3,….
Algorytm zapisu liczby ujemnej w kodzie U2:
1. Zapisz liczbę przeciwną do danej tak jak w ZM.
2. Dokonaj inwersji bitów (czyli pozamieniaj 0 na 1 i odwrotnie:);
3. Zwiększ wynik o 1.
Np. Liczba -27 na 8 bitach w U2:
0 0 0 1 1 0 1 1

1. Zapisujemy liczbę 27 na 8bitach
1 1 1 0 0 1 0 0
2. Zamieniamy bity

1 1 1 0 0 1 0 1
3. Dodajemy 1 i mamy -27 w U2
Natomiast 10101001U2 = -27+(25+23+1) = -128+41 = -87
3.1.3. Liczby rzeczywiste.

Zapis stałopozycyjny.
Do zapisu liczby stałoprzecinkowej przeznaczona jest z góry określona ilość bitów, a pozycję przecinka ustala się
arbitralnie, w zależności od wymaganej dokładności, wolne bity uzupełniając zerami. Do reprezentacji liczb ze
znakiem stosuje się najczęściej kod U2.
Np. Liczba 6,25=110,01(2) zapisana na 8 bitach gdy część ułamkowa zajmuje 3 najmłodsze bity, ma postać:
0
0
1
1
0
0
część całkowita
1
0
część ułamkowa
Natomiast liczba -6,25=-110,01(2) zapisana w powyższym formacie w kodzie U2, ma postać:
1
1
0
0
1
1
1
0
str. 6

Zapis zmiennopozycyjny.
Liczba zmiennoprzecinkowa jest komputerową reprezentacją liczb rzeczywistych zapisanych w postaci wykładniczej o
podstawie 2. Na zajęciach będziemy stosowali następującą notację:
z M 2C
S
gdzie:
z
M
C-S
C
S
-
znak liczby
znormalizowana mantysa (liczba ułamkowa spełniająca warunek: 1 M<2)
wykładnik (liczba całkowita)
spolaryzowana cecha (liczba całkowita umownie zwana cechą)
stała (liczba całkowita BIAS zależna od danej implementacji – rozwiązuje problem znaku wykładnika)
Uwaga:
 Powszechnie w procesorach i oprogramowaniu obliczeniowym wykorzystuje się binarny zapis
zmiennopozycyjnym zgodnym ze standardem IEEE754
(np. format 32-bitowy z polami: b31-znak, b23..30-cecha, b0..22-mantysa).
W przedstawieniu tym cecha, która jest ciągiem zer (albo ciągiem jedynek) nadaje kodowi specjalne
znaczenie, np.
01111111100000000000000000000000 +
00000000000000000000000000000000 0
Gdy cecha jest ciągiem zer mantysa jest zdenormalizowana tzn. 0,5 M<1
Ze względów dydaktycznych będziemy stosowali uproszczone formaty.
 Używając formatu zmiennopozycyjnego należy pamiętać o takich zagadnieniach jak: zakres (problem z
przepełnieniem i niedomiarem), zaokrąglanie, kolejność wykonywania działań (nie ma np. łączności)
 Liczbę, którą można dokładnie zapisać w danym formacie nazywamy liczbą maszynową.
Np.
Załóżmy, że operujemy następującym zmiennopozycyjnym formatem zapisu liczby rzeczywistej:
 na zapis przeznaczamy 16 bitów.
 najstarszy bit (b15) to bit znaku (będziemy stosować kod ZM),
 kolejne 6 bitów (b9-b14) to mantysa
 pozostałe bity (b0-b8) są przeznaczone na zapis cechy.
 przyjmijmy, że S=9.
Przedstawimy liczbę +0,0224609375 w powyższym formacie. Naszą liczbę zapisujemy w systemie binarnym w
postaci wykładniczej o podstawie 2:
0,0224609375 = 0,0000010111(2) = 1,0111(2) 2-6 = 1,0111(2) 23-9 = +1,0111(2) 211
-S
(2)
Oto liczba 0,0224609375 zapisana w zadanym formacie:
0
0
1
1
1
0
0
0
0
0
0
0
0
0
1
1
3.2. Kontrola transmisji danych

Bit parzystości

Suma kontrolna

CRC
http://wazniak.mimuw.edu.pl/index.php?title=MN03
str. 7
Zadania
z.3.1. Uzupełnij tabelkę (do zapisu liczb w kodzie ZM i U2 użyj minimalnej wielokrotności 8 bitów) :
(10)
1947
-1947
ZM
U2
01001110
11001110
01001101
11001101
z.3.2. Podaj zakres liczb całkowitych jakie można zapisać na 8 bitach:
a) w kodzie ZM
b) w kodzie U2
z.3.3. Uzasadnij, że liczba -1 w kodzie U2 jest reprezentowana zawsze jako ciąg jedynek.
z.3.4. Rozkoduj ciąg 10010001 zapisany w formacie stałopozycyjnym 8bitowym:
a) b0..5 – część całkowita, b6..7 – część ułamkowa (bez znaku)
b) b0..2 – część ułamkowa, b3..7 – część całkowita (bez znaku)
c) b0..2 – część ułamkowa, b3..6 – część całkowita, b7-znak (ZM)
d) b0..2 – część ułamkowa, b3..7 – część całkowita (U2)
z.3.5. Zapisz liczbę -112,09375 w 16bitowym formacie stałopozycyjnym:
a) b0..7 – część ułamkowa, b8..14 – część całkowita, b15-znak (ZM)
b) b0..7 – część ułamkowa, b8..15 – część całkowita (U2)
z.3.6. Podaj zakres i dokładność liczb jakie można zapisać w formacie stałopozycyjnym 8bitowym (bez znaku):
a) gdy część ułamkowa zajmuje 2 najmłodsze bity
b) gdy część ułamkowa zajmuje 5 najstarszych bitów
z.3.7. Zapisz w 16 bitowym formacie zmiennopozycyjnym: b15-znak, b14..7-znormalizowana mantysa, b6..0
spolaryzowana cecha przy S=20:
a) 9,1875
c) 503
b) 0,09375
d) -9,09375
z.3.8. Rozkoduj ciąg 10010001 zapisany w formacie zmiennopozycyjnym 8bitowym:
a) b7-znak, b6..3-znormalizowana mantysa, b0..2 spolaryzowana cecha przy S=8
b) b7-znak, b6..3-znormalizowana mantysa, b0..2 spolaryzowana cecha przy S=10
c) b0-znak, b7..4-znormalizowana mantysa, b1..3 spolaryzowana cecha przy S=10
d) b0-znak, b1..3-znormalizowana mantysa, b4..7 spolaryzowana cecha przy S=10
z.3.9. Podaj zakres jaki uzyskamy kodując liczby w formacie zmiennopozycyjnym 8 bitowym: b7-znak, b6..3znormalizowana mantysa, b0..2-spolaryzowana cecha przy S=8.
z.3.10. Wypisz i zaznacz na osi wszystkie liczby jakie można zakodować na 4 bitach w formacie zmiennopozycyjnym gdy
najstarszy bit jest bitem znaku, dwa następne bity są bitami spolaryzowanej cechy o stałej S=1, a najmłodszy bit jest
bitem znormalizowanej mantysy.
z.3.11. Określ, która z liczb jest liczbą maszynową, która z przepełnienia a która z niedomiaru gdy zapisane są w
formacie „zccmm” i są zapisane bez zastrzeżenia o cechach będących ciągiem jedynek i denormalizacji mantysy:
a) 2
c) -20
b) 0,2
d) -2,2
z.3.12. Dane słowa 8bitowe mają dodaną odpowiednią sumę kontrolną. Określ, które uległy zniekształceniu
a) 110111011
c) 01011101011
b) 0101110111
d) 0101110100
str. 8
Download