[ Pobierz całość w formacie PDF ]
Wprowadzenie do informatyki (ć w. 3)
ĆWICZENIA III
Dwó jkowy system stałoprzecinkowy–
konwersja, zakresy, podstawowe działania
Konwersja na system dziesię tny
1.
Oblicz wartość dziesiętną podanych stałoprzecinkowych liczb dwójkowych
zapisanych w kodzie znak-moduł
a) 101010,10 b) 011110,11 c) 111111,11 d) 000110,00
Wartość dziesiętna stałoprzecinkowej liczby binarnej
b
n-1
...b
1
b
0
,b
-1
b
-2
...b
-m
= b
n-1
2
n-1
+ ... + b
1
2
1
+ b
0
2
0
+ b
-1
2
-1
+ b
-2
2
-2
+ ... + b
-m
2
-m
gdzie:
b - bit, cyfra dwójkowa 0 lub 1
n - liczba bitów całkowitych
m - liczba bitów ułamkowych
PRZYKŁ AD:
Obliczyć wartość stałoprzecinkowej liczby dwójkowej zapisanej w kodzie znak-moduł
1
110101,111011
(ZM)
1
110101,111011
bit znaku
moduł liczby
Najstarszy bit to bit znaku. Jedynka na najstarszym bicie mówi nam, ż e liczba jest
ujemna. Pozostaje nam obliczenie jej wartości, czyli wyznaczenie jej modułu. Moż na
to zrobić na kilka równoważ nych sposobów.
Sposó b pierwszy
Obliczamy wartość częś ci całkowitej sumują c wagi pozycji zawierają cych cyfrę 1:
110101
(2)
= 2
5
+2
4
+2
2
+2
0
=32+16+4+1 = 53
(10)
Identycznie obliczamy wartość częś ci ułamkowej:
0,111011
(2)
= 2
-1
+2
-2
+2
-3
+2
-5
+2
-6
=
1
/
2
+
1
/
4
+
1
/
8
+
1
/
32
+
1
/
64
0,111011
(2)
=
32
/
64
+
16
/
64
+
8
/
64
+
2
/
64
+
1
/
64
0,111011
(2)
=
59
/
64
Łączymy obie częś ci w całość otrzymują c wynik:
110101,111011
(2)
= 53
59
/
64 (10)
Łączą c moduł liczby z jej znakiem otrzymujemy wynik końcowy konwersji:
1110101,111011
(ZM)
= -53
59
/
64 (10)
Izabela Szczęch
Strona 1
Wprowadzenie do informatyki (ć w. 3)
Sposó b drugi
Wartość częś ci całkowitej obliczamy jak powyż ej. Część ułamkową traktujemy
chwilowo jak liczbę całkowitą , obliczamy jej wartość i wynik mnoż ymy przez wagę
ostatniej pozycji liczby wejściowej:
111011
(2)
= 2
5
+2
4
+2
3
+2
1
+2
0 =
32 + 16 + 8 + 2 + 1 = 59
Waga ostatniej pozycji wynosi 2
-6
=
1
/
64
, zatem
0,111011
(2)
= 59*
1
/
64
=
59
/
64
Łączymy część całkowitą z częś cią ułamkową i otrzymujemy:
110101,111011
(2)
= 53
59
/
64 (10)
Łączą c moduł liczby z jej znakiem otrzymujemy wynik końcowy konwersji:
1110101,111011
(ZM)
= -53
59
/
64 (10)
Sposó b trzeci
Traktujemy część całkowitą i część ułamkową jak jedną liczbę całkowitą . Za pomocą
schematu Hornera wyznaczamy wartość tej liczby, a wynik mnoż ymy przez wagę
ostatniej pozycji liczby wejściowej:
110101,111011
(2)
= ?
W = 0
W = 1+(0*2) =1
W = 1+(1*2) = 3
W = 0+(3*2) = 6
W = 1+(6*2) = 13
W = 0+(13*2) = 26
W = 1+(26*2) = 53 -część całkowita obliczona, kontynuujemy z częś cią ułamkową
W = 1+(53*2) = 107
W = 1+(107*2) = 215
W = 1+(215*2) = 431
W = 0+(431*2) = 862
W = 1+(862*2) = 1725
W = 1+(1725 *2) = 3451 -koniec częś ci ułamkowej
Otrzymany wynik mnoż ymy przez wagę ostatniej pozycji, czyli 2
-6
=
1
/
64
:
110101,111011
(2)
= 3451
1
/
64
= 53
59
/
64 (10)
Łączą c moduł liczby z jej znakiem otrzymujemy wynik końcowy konwersji:
1110101,111011
(ZM)
= -53
59
/
64 (10)
Izabela Szczęch
Strona2
Wprowadzenie do informatyki (ć w. 3)
Konwersja na dwó jkowy system stałoprzecinkowy
2.
Wyznacz dwójkową stałoprzecinkową reprezentację w kodzie znak-moduł poniż szych
liczb dziesiętnych z dokładnością do 8 bitów po przecinku. Przyjmij, ż e wynik ma być
zapisany na 16-tu bitach.
a) 1,125 b) 0,1 c) -2,0625 d) -1,13
W kodzie znak-moduł najstarszy bit to bit znaku. Jedynka na najstarszym bicie mówi
nam, ż e liczba jest ujemna, zero, ż e dodatnia. Pozostaje nam zapisanie dwójkowo
modułu liczby. Moż na to zrobić na kilka równoważ nych sposobów:
Sposó b pierwszy
Liczbę rozdzielamy na część całkowitą oraz część ułamkową .
Część całkowitą przeliczamy na system dwójkowy.
Kolejne bity częś ci ułamkowej otrzymujemy mnożąc ją przez dwa. Część całkowita
wyniku jest kolejną cyfrą binarną . Do następnych obliczeń bierzemy część ułamkową
wyniku. Operację kontynuujemy, aż otrzymamy wynik zero lub wyznaczymy zadaną
ilość cyfr ułamkowych.
PRZYKŁ AD
Przeliczyć na system dwójkowy liczbę dziesiętną 5,645
(10)
z dokładnością do 15
ułamkowych cyfr binarnych.
Wyznaczamy część całkowitą liczby 5
(10)
= 101
(2)
.
Wyznaczamy cyfry częś ci ułamkowej 0,645
(10)
0,645 x 2 = 1,29 - cyfra 1
0,29 x 2 = 0,58 - cyfra 0
0,58 x 2 = 1,16 - cyfra 1
0,16 x 2 = 0,32 - cyfra 0
0,32 x 2 = 0,64 - cyfra 0
0,64 x 2 = 1,28 - cyfra 1
0,28 x 2 = 0,56 - cyfra 0
0,56 x 2 = 1,12 - cyfra 1
0,12 x 2 = 0,24 - cyfra 0
0,24 x 2 = 0,48 - cyfra 0
0,48 x 2 = 0,96 - cyfra 0
0,96 x 2 = 1,92 - cyfra 1
0,92 x 2 = 1,84 - cyfra 1
0,84 x 2 = 1,68 - cyfra 1
0,68 x 2 = 1,36 - cyfra1 - koniec, mamy 15 cyfr ułamkowych
Uwaga: pierwsza wyznaczona cyfra częś ci ułamkowej to bit najbliż szy przecinka.
Łączymy otrzymane wyniki:
5,645
(10)
= 101,101001010001111
(2)
Ponieważ po osią gnięciu 15 cyfr część ułamkowa wciąż jest róż na od 0, otrzymane
rozwią zanie jest przybliż one (z dokładnością do 15 ułamkowych cyfr binarnych).
Izabela Szczęch
Strona3
Wprowadzenie do informatyki (ć w. 3)
Sposó b drugi
Załóż my, iż chcemy znaleźć rozwinięcie binarne liczby dziesiętnej z dokładnością m
bitów ułamkowych. W tym celu liczbę dziesiętną mnoż ymy przez 2
m
, bierzemy część
całkowitą wyniku i przeliczamy ją na zapis binarny. Następnie za pomocą przecinka
oddzielamy od końca zapisu m bitów i otrzymujemy zapis binarny wyjściowej liczby
dziesiętnej z zadaną dokładnością . (oddzielenie za pomocą przecinka m ostatnich
bitów odpowiada podzieleniu liczby przez 2
m
, czyli to co najpierw pomnoż yliśmy
teraz dzielimy i dlatego wynik jest poprawny)
PRZYKŁ AD
Przeliczyć na system dwójkowy liczbę 154,35
(10)
z dokładnością do 10 bitów
ułamkowych.
Liczbę mnoż ymy przez 2
10
= 1024, zaokrą glamy w dół do wartości
całkowitej i przeliczamy na system dwójkowy:
[154,35 x 1024] = [158054,4] = 158054
158054
div
2 = 79027 i reszta 0
79027
div
2 = 39513 i reszta 1
39513
div
2 = 19756 i reszta 1
19756
div
2 = 9878 i reszta 0
9878
div
2 = 4939 i reszta 0
4939
div
2 = 2469 i reszta 1
2469
div
2 = 1234 i reszta 1
1234
div
2 = 617 i reszta 0
617
div
2 = 308 i reszta 1
308
div
2 = 154 i reszta 0
154
div
2 = 77 i reszta 0
77
div
2 = 38 i reszta 1
38
div
2 = 19 i reszta 0
19
div
2 = 9 i reszta 1
9
div
2 = 4 i reszta 1
4
div
2 = 2 i reszta 0
2
div
2 = 1 i reszta 0
1
div
2 = 0 i reszta 1, koniec
158054
(10)
= 100110100101100110
(2)
Rozdzielamy przecinkiem 10 cyfr końcowych i otrzymujemy ostatecznie:
154,35
(10)
= 10011010,0101100110
(2)
Jest to oczywiście wartość przybliż ona (błą d jest mniejszy od
1
/
1000
) :
10011010,0101100110
(2)
= 154
358
/
1024
= 154.349609375
Izabela Szczęch
Strona4
Wprowadzenie do informatyki (ć w. 3)
Zakresy
3.
Wyznacz zakres dwójkowych liczb stałoprzecinkowych w kodzie ZM
reprezentowanych na 16 bitach (1 bit na znak, 7 bitów na część całkowitą , 8 bitów na
część ułamkową ).
4.
Podaj ogólny wzór określają cy zakres i-bitowych dwójkowych liczb
stałoprzecinkowych w kodzie ZM, gdzie najstarszy bit to bit znaku, część całkowita
jest n-bitowa, a część ułamkowa m-bitowa.
5.
Liczby rzeczywiste dokładnie zapisywalne w komputerze to tzw.
liczby maszynowe
.
Pozostałe liczby rzeczywiste są wyraż ane z pewnym przybliż eniem poprzez
wykorzystanie liczb maszynowych.
Przeanalizuj gęstość ułoż enia na osi wartości dziesiętnych odpowiadają cych
dwójkowym stałoprzecinkowym liczbom maszynowym z przedziału [0-1), w których
na część ułamkową przeznaczono 4 bity.
Gęstość rozłożenia na osi watości dziesiętnych dla
stałoprzecinkowych liczb dodatnich z przedziału [0,0000 -1,000
)
0 0,0625 0,125 0,1875 0,25 0,3125 0,3750,4375 0,5 0,5625 0,625 0,6875 0,75 0,8125 0,8750,9375 1
Zwróć uwagę, ż e wartości pojawiają się na osi w stałym odstępie równym 2
-4
. Liczby
nie obecne na osi, nie będę reprezentowane dokładnie, będą reprezentowane jako
przybliż enie do najbliż szej liczby maszynowej, a więc z błędem mniejszym niż 2
-4
.
Podstawowe działania
6.
Stosują c dwójkową stałoprzecinkową reprezentację znak-moduł (bit znaku, 7 bitów na
część całkowitą i 8 bitów na część ułamkową ) zapisz następują ce liczby całkowite i
wykonaj działania. Sprawdź poprawność otrzymanego wyniku przeliczają c go na
wartość w systemie dziesiętnym.
a) 1,125 + 20,5 b) -3,0 + (-2,5) c) -2,0625 + 6,25
d) 127,03125 + 3,5 e) -120,25+(-10,015625)
Uwaga:
obowią zują te same zasada, co przy działaniach na całkowitych liczbach w
kodzie znak-moduł. Nadmiar (niedomiar) moż na wykryć , jeśli wystą piło przeniesienie
(lub poż yczka) na pozycję znakową .
Izabela Szczęch
Strona5
[ Pobierz całość w formacie PDF ]
© 2009 Po zniszczeniu przeszłości przyszedł czas na budowanie przyszłości. - Ceske - Sjezdovky .cz. Design downloaded from free website templates