Stało- i zmiennopozycyjna reprezentacja liczb binarnych

advertisement
URZĄDZENIA TECHNIKI KOMPUTEROWEJ
Stało- i zmiennopozycyjna
reprezentacja liczb binarnych
Zapis stałoprzecinkowy
Aby umożliwić również zapis liczb ułamkowych,
musimy rozszerzyć wagi pozycji w stronę ujemnych
potęg podstawy. Część ułamkową oddzielimy od
części całkowitej zapisu za pomocą znaku
przecinka.
waga pn-1 … p2p1p0 , p-1p-2 … p-m
cyfry an-1 … a2a1a0 , a-1a-2 … a-m
Binarną liczbę stałoprzecinkową można potraktować jako złożenie dwóch części — liczby całkowitej oraz ułamkowej rozdzielonych przecinkiem:
URZĄDZENIA TECHNIKI KOMPUTEROWEJ
URZĄDZENIA TECHNIKI KOMPUTEROWEJ
Zamianę liczby dziesiętnej na postać binarną przeprowadza się w dwóch
etapach:
• zamiana liczby całkowitej na postać binarną za pomocą cyklicznego
dzielenia przez 2;
• zamiana części ułamkowej na postać binarną za pomocą cyklicznego
mnożenia przez 2. Jeżeli wynik jest > 1, to wyznaczony bit części
ułamkowej jest także równy 1. Do dalszych obliczeń wykorzystujemy
część ułamkową wyniku.
Proces należy kontynuować aż do otrzymania 0. Z wyników iloczynów
pobieramy wartości całkowite — ułamek liczby binarnej. Otrzymane liczby
łączymy, przedzielając część całkowitą i ułamkową przecinkiem.
Jeżeli mnożenie przez 2 prowadzi do osiągnięcia nieskończenie długiej
kombinacji zer i jedynek, należy przyjąć przybliżoną dokładność,
np. do 10 miejsc po przecinku.
URZĄDZENIA TECHNIKI KOMPUTEROWEJ
Przykład
10,225
czy
wynik
nie jest
większy
lub
równy 1
URZĄDZENIA TECHNIKI KOMPUTEROWEJ
Przykład
10,225
czy
wynik
nie jest
większy
lub
równy 1
URZĄDZENIA TECHNIKI KOMPUTEROWEJ
Przykład
Obliczyć wartość liczby dwójkowej 11101,011B
11101,011B = 1 * 2-3 + 1 * 2-2 + 0 * 2-1 + 1 * 20 + 0 * 21 + 1 * 22 +
1 * 23 + 1 * 24
11101,011B = 1 * 1/8 + 1 * 1/4 + 0 * 1/2 + 1 * 1 + 0 * 2 + 1 * 4 +
1 * 8 + 1 * 16
11101,011B = 1/8 + 1/4 + 1 + 4 + 8 + 16
11101,011B = 29 3/8
Przykład
Zamienić ułamek 12.7 na postać binarną 8-bitową, gdzie
przecinek jest po czterech bitach !!!!!!!
Etap 1
Część całkowita 12D to w postaci dwójkowej 1100B.
Etap 2
Obliczanie części ułamkowej wygląda następująco:
0.7 * 2 = 1.4 -> 1
0.4 * 2 = 0.8 -> 0
0.8 * 2 = 1.6 -> 1
0.6 * 2 = 1.2 -> 1
0.2 * 2 = ….. – tutaj przerywamy obliczenia
i stąd 12.7D = 1100,1011B
Zapis zmiennopozycyjny
Z zapisem zmiennoprzecinkowym można spotkać się
w przypadkach, gdzie przy jego pomocy
przedstawia się albo bardzo duże wartości, albo
bardzo małe. Zapis ten nazywa się często notacją
naukową, np.:
Gwiazda Proxima Centauri znajduje się w odległości
9460800000000 [km], czyli 9,4608 * 1012.
Masa elektronu wynosi me =
0,00000000000000000000000000091095 [g],
czyli 9,1095 x 10-28 [g]
1.4.2. Liczby zmiennoprzecinkowe (zmiennopozycyjne)
W porównaniu z liczbami stałoprzecinkowymi liczby zmiennoprzecinkowe
(ang. floating-point numbers — FP) umożliwiają obsługę większego
zakresu liczb (bardzo małych lub bardzo dużych), jednak kosztem
wolniejszego przetwarzania i mniejszej dokładności.
Termin „zmiennoprzecinkowe" oznacza, że nie istnieje stała liczba cyfr
przed przecinkiem i po przecinku.
Liczba zapisana w systemie zmiennoprzecinkowym składa się z dwóch części:
liczby stałoprzecinkowej, której wartość bezwzględna jest mniejsza od wartości
podstawy systemu pozycyjnego oraz z podstawy podniesionej do pewnej potęgi
zwanej wykładnikiem lub cechą. Wartość liczby jest równa iloczynowi części
stałoprzecinkowej i wykładniczej:
w = m * be,
m - mantysa, b - podstawa systemu, e - wykładnik potęgowy.
1111
1001
Liczymy cechę! 1111
e = 1(-23)+1*22+1*21+1*20 =
-8 +4 +2 +1
= -1
1111
1001
Liczymy mantysę! 1001 – dzielimy na dwie części 10,01
traktujemy jak liczbę stałoprzecinkową z przedziału 1,2
10,01
m = 1(-21)+0*20+0*2-1+1*2-2 =
-2 +0 +0 +1/4
= -2+1/4 = -1 ¾ = -1,75
1111
1001
cecha
e = -1
LFP = m*2e
LFP = -1,75 * 2-1
= -1,75 * ½
= -1,75 * 0,5
= - 0,875
mantysa
m = -1,75
Zadanie - ćwiczenie
Oblicz wartość liczby 00010100B
e = 0*(-23) + 0*22 + 0*21 + 1*20 = 0 + 0 +0+ 1 = 1
M 01,00 m = 0*(-21) + 1*20 + 0*2-1 +0*2-2 = 0+1+0+0=1
LFP = 1*21=2
Zadanie do samodzielnej analizy
Obliczanie reprezentacji zmiennoprzecinkowej
Mamy określony format zapisu liczby zmiennoprzecinkowej w
systemie dwójkowym. Wiemy, że wykładnik ma zawierać n bitów w kodzie U2, a cecha m bitów w zapisie
stałoprzecinkowym U2.
Przykład prostego systemu zmiennoprzecinkowego, w którym
wykładnik i cecha mają po 4 bity długości. Przykładową
liczbą niech będzie wartość 56:
56D = 111000B = 0111000U2 - dodajemy zero, aby zaznaczyć,
iż jest to liczba dodatnia.
Zapiszemy wzór obliczeniowy, a następnie będziemy
przesuwać w prawo cyfry mantysy dodając jednocześnie 1
do wykładnika, aż znacząca jedynka znajdzie się na pozycji
o wadze 1/2.
0111000,000U2 =20000U2
011100,000U2 =20001U2 - przesuwamy cyfry mantysy w prawo,
zwiększamy wykładnik
01110,000U2 =20010U2
0111,000U2 =20011U2
011,100U2 =20100U2
01,110U2 =20101U2
0,111U2 =20110U2 - kończymy, mantysa jest
znormalizowana
Otrzymujemy więc:
e = 0110 = 6D
m = 0,111 = 7/8, sprawdzamy: 7/8 x 26 = 448/8 = 56
Dla liczby 9D
9D = 1001B = 01001U2
01001,000U2 =20000U2
0100,100U2 =20001U2
010,010U2 =20010U2
01,001U2 =20011U2 - ostatnia jedynka zaraz zniknie!!!
0,100U2 =20100U2 - koniec
Otrzymaliśmy wynik:
e = 0100 = 4D
m = 0,100 = 1/2, sprawdzamy: 1/2 * 24 = 16/2 = 8
9D =? 01000100ZP
Download