Kodowanie zmiennopozycyjne

Transkrypt

Kodowanie zmiennopozycyjne
Temat: Kodowanie
zmiennopozycyjne
Najpierw kilka
slajdów na temat
wad kodowania
stałopozycyjnego
Liczbę zakodowano
w reprezentacji
stałopozycyjnej
na 8 bitach
(4 bity części całkowitej
i 4 bity części ułamkowej).
Jaką najmniejszą
i największą wartość
możemy tak zapisać?
Wartość najmniejsza
cz. całkowita
cz. ułamkowa
1 0 0 0 0 0 0 0
3
2
1
0
-1
-2
-2 +2 +2 +2 +2 +2 +2 +2
-3
-4
Wartość największa
cz. całkowita
cz. ułamkowa
0 1 1 1 1 1 1 1
3
2
1
0
-1
-2
-2 +2 +2 +2 +2 +2 +2 +2
-3
-4
Liczbę zakodowano
w reprezentacji
stałopozycyjnej
na 8 bitach
(6 bitów części całkowitej
i 2 bity części ułamkowej).
Jaką najmniejszą
i największą wartość
możemy tak zapisać?
Wartość najmniejsza
cz. całkowita cz. ułamkowa
1 0 0 0 0 0 0 0
5
4
3
2
1
0
-2 +2 +2 +2 +2 +2 +2 +2
-1
-2
Wartość największa
cz. całkowita cz. ułamkowa
0 1 1 1 1 1 1 1
5
4
3
2
1
0
-2 +2 +2 +2 +2 +2 +2 +2
-1
-2
Zwiększenie liczby
bitów przeznaczonych
na część całkowitą
powoduje zwiększenie
zakresu ale ...
… jednocześnie
powoduje
zmniejszenie precyzji
reprezentowanych
liczb.
Na przykład zakodowanie
wartości 0,4(10)
kodem stałopozycyjnym
(6 bitów części całkowitej
i 2 bity części ułamkowej)
jest bardzo niedokładne.
0,4(10) po zakodowaniu kodem
stałopozycyjnym jest przybliżone
wartością 0,25(10)
cz. całkowita cz. ułamkowa
0 0 0 0 0 0 0 1
5
4
3
2
1
0
-2 +2 +2 +2 +2 +2 +2 +2
-1
-2
W przypadku wartości 0,4(10)
bity części całkowitej
nie są w ogóle wykorzystywane
cz. całkowita cz. ułamkowa
0 0 0 0 0 0 0 1
5
4
3
2
1
0
-2 +2 +2 +2 +2 +2 +2 +2
-1
-2
Wygodniej byłoby,
gdyby pozycja
przecinka nie była
stała, ale zmieniała
się w zależności
od potrzeb
Po przesunięciu pozycji
przecinka wartość 0,4(10) jest
reprezentowana dużo
dokładniej
cz. ułamkowa
0 1 1 0 0 1 1 0
-1
-2
-3
-4
-5
-6
-2 +2 +2 +2 +2 +2 +2 +2
-7
-8
0,4(10) ≈0,3984375(10)
cz. ułamkowa
0 1 1 0 0 1 1 0
-1
-2
-3
-4
-5
-6
-2 +2 +2 +2 +2 +2 +2 +2
-7
-8
Reprezentacja
zmiennoprzecinkowa
c
x = m·2
m – mantysa
(liczba stałoprzecinkowa)
c – cecha
(liczba całkowita)
W reprezentacji
zmiennoprzecinkowej
liczbę można
zakodować na wiele
sposobów.
x = 1,5 można
przedstawić np. jako:
-2
x = 6·2
-1
x = 3·2
0
x = 1,5·2
1
x = 0,75·2
2
x = 0,375·2
Która z tych reprezentacji
jest optymalna?
x = 6·2
-1
x = 3·2
0
x = 1,5·2
1
x = 0,75·2
2
x = 0,375·2
-2
Która z tych reprezentacji
jest optymalna?
x = 6·2
-1
x = 3·2
0
x = 1,5·2
1
x = 0,75·2
2
x = 0,375·2
-2
Która z tych reprezentacji
jest optymalna?
x = 0,75·2
(mantysa w postaci
znormalizowanej)
1
Jeżeli mantysa spełnia
warunek
|m| ϵ <0,5; 1)
to jest przedstawiona
w postaci
znormalizowanej
Przykład: x = 1,5
mantysa
cecha
0 0 1 0 1 1 0 0
2
1
0
0
-1
-2
-2 +2 +2 -2 +2 +2 +2 +2
-3
-4
mantysa
cecha
0 0 1 0 1 1 0 0
2
1
0
0
-1
-2
-2 +2 +2 -2 +2 +2 +2 +2
c=1
m = 0,75
-3
-4
mantysa
cecha
0 0 1 0 1 1 0 0
2
1
0
0
-1
-2
-2 +2 +2 -2 +2 +2 +2 +2
1
x = 0,75·2 = 1,5
-3
-4
Przykład: x = 0,375
cecha
mantysa
1 1 1 0 1 1 0 0
2
1
0
0
-1
-2
-2 +2 +2 -2 +2 +2 +2 +2
-3
-4
cecha
mantysa
1 1 1 0 1 1 0 0
2
1
0
0
-1
-2
-2 +2 +2 -2 +2 +2 +2 +2
c = -1
m = 0,75
-3
-4
mantysa
cecha
1 1 1 0 1 1 0 0
2
1
0
0
-1
-2
-2 +2 +2 -2 +2 +2 +2 +2
-1
-3
x = 0,75·2 = 0,375
-4
Więcej informacji:
Podręcznik: strona 26-27