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