Pobierz prezentację
OpublikowałYetta Parzych Został zmieniony 10 lat temu
1
Stało- i zmiennopozycyjna reprezentacja liczb binarnych
‽ud3£k0 Urządzenia Techniki Komputerowej
2
Reprezentacja liczb w systemie komputerowym
Reprezentacja liczb w systemie komputerowym polega na zamianie zbioru liczb rzeczywistych na odpowiadające im liczby binarne. Chcąc zapisać liczby w systemie komputerowym musimy dokonać pewnego uproszczenia.
3
Reprezentacja liczb w systemie komputerowym
Ile jest liczb rzeczywistych? Ile liczb zmieści się w pamięci komputera?
4
Odwzorowanie liczb w systemie komputerowym
Chcąc zapisać liczby w systemie komputerowym musimy dokonać pewnego uproszczenia. Liczby rzeczywiste Liczby w komputerze R1 K1 R2 K5 K2 R3 R4 K3 K4 R5 R6 R7
5
Reprezentacja liczb całkowitych
w komputerze liczby przechowywane są w pamięci lub w rejestrach procesora o ustalonej liczbie pól, np. 8 lub 16 Problemy Problem przepełnienia - gdy liczba jest zbyt duża, by móc ją zapisać przy pomocy np. 8 bitów Problem niedopełnienia - gdy liczba jest za mała, by ją zapisać przy pomocy np. 8 bitów Jak zapisywać liczby ujemne? Pewne liczby musimy pominąć – które i według jakiego algorytmu?
6
Reprezentacje liczb z częścią ułamkową
Zapis stałoprzecinkowy Zapis zmiennoprzecinkowy
7
Binarna liczna stałoprzecinkowa
Binarną liczbę stałoprzecinkową można potraktować jako złożenie dwóch części — liczby całkowitej oraz ułamkowej rozdzielonych przecinkiem: Część całkowita Część ułamkowa , 0101
8
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
9
Zamiana liczby rzeczywistej dziesiętnej na binarną
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.
10
Zamiana liczby dziesiętnej na binarną
Przykład Zamieniamy liczbę 10,225 na liczbę binarną. Podział liczby na cześć całkowitą i ułamkową Część całkowita Część ułamkowa 10, 225
11
2. Zamiana części całkowitej na binarną
Dzielna Dzielnik Reszta z dzielenia 10 :2 5 1 2 1010=10102
12
3. Zamiana części ułamkowej na binarną
Mnożna Mnożnik Wynik Część całkowita 1 0,225 *2 0,45 2 0,9 3 1,8 4 0,8 1,6 5 0,6 1,2 6 0,2 0,4 7 8 9 10
13
4. Połączenie liczb Uzyskane liczby binarne scalamy w jedną.
Część całkowita 10 1010 Część ułamkowa 0,225 0, 10,225 1010,
14
Ćwiczenie zamiana na postać binarną
25,34 56,95 18,77 21,88 32,65 55,55 11,85 34,42 44,21 49,39 15,344 53,953 16,771 31,886 42,657 45,558 41,853 54,425 24,219 39,393
15
Zamiana liczb binarnych na dziesiętne
Chcąc zamienić liczbę binarną stałoprzecinkową na postać dziesiętną należy skorzystać z poniższego wzoru: an-1…a1a0,a-1…a-m=an-1*pn-1+a1*p1+a0*p0,a-1*p-1+…+a-m*p-m Wartości wag części ułamkowych przyjmują postać ułamków w których dokładność jest określona przez wagę najmłodszej cyfry
16
URZĄDZENIA TECHNIKI KOMPUTEROWEJ
17
Zamiana liczb binarnych na dziesiętne
Przykład Obliczyć wartość liczby dwójkowej 11101,011B 11101,0112 = 1 * * * * * * * * 24 11101,0112 = 1 * 1/8 + 1 * 1/4 + 0 * 1/2 + 1 * * * * * 16 11101,0112 = 1/8 + 1/ 11101,0112 = 29 3/8
18
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
19
Reprezentacja stałoprzecinkowa
Wady reprezentacji stałoprzecinkowej (Fixed Point Notation): 10-cyfrowy format: XXXXX.XXXXX W przypadku liczb stałoprzecinkowych wystąpi duży błąd przy bardzo małych wartościach oraz bardzo dużych wartościach (w odniesieniu do powyższego formatu).
20
Liczby rzeczywiste Charakterystyka:
Liczby rzeczywiste mają cześć całkowitą i ułamkową Nie można już przyjąć, że przecinek leży po prawej stronie (bo wtedy byśmy mieli tylko liczby całkowite) ani, że leży po lewej stronie (bo wtedy byśmy mieli tylko liczby ułamkowe) Niezbyt „ekonomiczne” byłoby używanie kodowania w systemie stałoprzecinkowym (np. przecinek rozdziela dwa bajty) Co chcemy tak naprawdę uzyskać? System kodowania dla którego błąd względny będzie tego samego rzędu dla wszystkich wartości biorących udział w obliczeniach.
21
Skalowanie liczby Dostosowywanie skali liczby ułamkowej:
i tak dalej ... Możliwość wykonania działania z zastosowaniem wszystkich cyfr znaczących. Wynik jednak musi być dodatkowo pomnożony przez wykładniczy współczynnik korygujący.
22
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 [km], czyli 9,4608 * 1012. Masa elektronu wynosi me = 0, [g], czyli 9,1095 x [g]
23
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.
24
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.
27
Liczymy cechę! e = 1(-23)+1*22+1*21+1*20 = = -1
28
Liczymy mantysę! – 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+1/4 = -1 ¾ = -1,75
29
cecha mantysa e = -1 m = -1,75 LFP = m*2e LFP = -1,75 * 2-1 = -1,75 * ½ = -1,75 * 0,5 = - 0,875
30
Zadanie - ćwiczenie Oblicz wartość liczby 00010101B 01010110B
M 01,00 m = 0*(-21) + 1*20 + 0*2-1 +0*2-2 = =1 LFP = 1*21=2
31
Obliczanie reprezentacji zmiennoprzecinkowej
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 = B = U2 - 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.
32
,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
33
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 =? ZP
34
System zmiennoprzecinkowy
Metoda: Kodowanie w systemie zmiennoprzecinkowym zwanym też cecha-mantysa umożliwia zapis liczb rzeczywistych z ustalonym błędem względnym system oparty na podziale liczby na cześć ułamkową zwaną mantysą oraz na wykładnik potęgi podstawy systemu zwany cechą opracowany na podstawie zapisu liczby w systemie pozycyjnym wagowym
35
Reprezentacja zmiennoprzecinkowa
Zmiennoprzecinkowa (Floating Point Notation) reprezentacja liczby dziesiętnej: M – mantysa, liczba ułamkowa ze znakiem, przedstawiona w jednym z trzech kodów ZM, ZU1, ZU2, W – wykładnik lub cecha, liczba całkowita ze znakiem przedstawiona również w jednym z trzech kodów (nie koniecznie tym samym co M), p – wspólna podstawa kodów zastosowanych do zapisu słów M i W, d – liczba naturalna (zwykle równa 1).
36
Normalizacja liczby zmiennoprzecinkowej
Liczba zmiennoprzecinkowa jest znormalizowana, jeśli mantysa spełnia warunek: Podczas czynności normalizacji następuje odpowiednie przesunięcie pozycji kropki dziesiętnej („przecinka”), co uzasadnia nazwanie tej notacji zmiennoprzecinkową. W przypadku liczb dwójkowych odbywa się to poprzez przesunięcie cyfr znaczących w prawo lub w lewo, w zależności od tego czy przecinek należy przesunąć w kierunku liczb małych, czy też dużych.
37
Liczby zmiennoprzecinkowe w praktyce
Metodyka dostosowywania liczby zmiennoprzecinkowej: Przykład: Przyjęto jednobajtowe słowo dwójkowe M i W w kodzie ZU2. Zadanie: Przedstawienie liczby dziesiętnej L = w dwójkowym zapisie zmiennoprzecinkowym, znormalizowanym. Przekształcenie liczby L na liczbę dwójkową w kodzie ZU2: Normalizacja poprzez przesunięcie przecinka dziesiętnego (warunek – poprzedni slajd): Stosując 8-bitowy kod ZU2 dla słów mantysy i wykładnika otrzymujemy dwójkowy zapis zmiennoprzecinkowy: Sprawdzenie: Wirtualne kropki
38
Standard IEEE 754 Pojedyncza precyzja:
mantysa 23 bity, wykładnik 8 bitów (nadmiar 127), znak 1 bit S E M Wykładnik Mantysa Znak Wartość: 1/ / /64 itd /223 1/ / /32 itd.. 22 23 31 bit bajt 1 bajt 2 bajt 3 bajt 4 Mantysa jest znormalizowana do zmniejszonej podstawy wykładnika (kodowanie w formacie U1)
39
Standard IEEE 754 Procedura zapisu:
Określamy znak: Bit31= 1 jeżeli liczba ujemna, 0 jeżeli dodatnia Szukamy największej liczby postaci 2w mniejszej niż liczba Zapisujemy wykładnik = w + nadmiar Dzielimy liczbę przez 2w (wynik będzie miał postać 1.xxxx) Odejmujemy 1 i szukamy mantysy Zaznaczamy bit jako 1 jeżeli po odjęciu 1/(2(23-bit)) (dla pojedynczej precyzji) mamy wartość nieujemną. Jeżeli otrzymamy wartość ujemną, zaznaczamy bit jako 0 i ignorujemy tę operację. Procedurę powtarzamy aż w wyniku odejmowania otrzymamy 0 lub dojdziemy do bitu nr 0. Jedynka wiodąca Konwerter z liczby dziesiętnej na dwójkową w standardzie IEEE 754
40
Standard IEEE 754 Przykład: (zapisujemy liczbę 14.5) (nadmiar 127)
Liczba jest dodatnia Bit31 = 0 Największa liczba 2w mniejsza niż 14.5 to 23 = 8 w = 3 Zapisujemy wykładnik = w = 130 14.5/23 = odejmujemy 1 i otrzymujemy /2= bit22 = 1 /4= bit21 = 1 /8= bit20 = 0 ignorujemy operację /16= bit19 = 1 Pozostałe bity mantysy = 0 wykładnik mantysa znak
41
Standard IEEE 754 Pojedyncza precyzja: mantysa 23 bity, wykładnik 8 bitów, znak 1 bit, nadmiar 28/2 - 1 = 127 Podwójna precyzja: mantysa 52 bity, wykładnik 11 bitów, znak 1 bit, nadmiar 211/2 - 1 = 1023 Rozszerzona podwójna precyzja: mantysa 64 bity, wykładnik 15 bitów (nadmiar 264/2 - 1 = 16383), znak 1 bit
42
Najmniejsza wartość możliwa do zapisania w mantysie
Standard IEEE 754 Precyzja jest określana przez liczbę miejsc po przecinku, czyli jest określana przez mantysę. Najmniejsza wartość możliwa do zapisania w mantysie Pojedyncza precyzja: Mantysa ma 23 bity 1/223 ≈ 1.2* 10-7 7 cyfr po przecinku Podwójna precyzja Mantysa ma 52 bity 1/252 ≈ 2.2* cyfr po przecinku Rozszerzona podwójna precyzja Mantysa ma 64 bity 1/264 ≈ 5.4* 19 cyfr po przecinku
43
Znaki i teksty Teksty składają się ze znaków
Podstawą zapisu jest jeden bajt 1 bajt przyjmuje 256 różnych wartości Ważną cechą kodowania jest jednoznaczność: przyjęcie pewnego sposobu kodowania powinno być powszechne: ASCII: 0 – 127 standardowe, 128 – 256 zależne od kraju Znaki specjalne 0-31 Spacja 32 Cyfry 48 – 57 Wielkie litery 65 – 90 Małe litery Pozostałe kody: Kropka, przecinek, itd… 33-47, 58-64, 91-96, Np. Litera W: kod binarny 87 Kod znaku Znak ASCII (American Standard Code for Information Interchange)
44
Kody UNICODE 256 znaków alfanumerycznych jakie można zakodować za pomocą rozszerzonego kodu ASCII nie dawało możliwości zakodowania znaków diakrytycznych wielu języków np. polskiego. Odpowiedzią jest kod nazwany UNICODE o długości 16 bitów dla każdego znaku. Daje to możliwość zakodowania 216, czyli znaków.
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.