Stało- i zmiennopozycyjna reprezentacja liczb binarnych

Slides:



Advertisements
Podobne prezentacje
PRZEDSTAWIANIE INFORMACJI W KOMPUTERZE
Advertisements

Metody numeryczne część 1. Rozwiązywanie układów równań liniowych.
DYSKRETYZACJA SYGNAŁU
Operacje zmiennoprzecinkowe
Liczby pierwsze.
Metody numeryczne Wykład no 1.
Materiały pochodzą z Platformy Edukacyjnej Portalu
Liczby w Komputerze Zajęcia 3.
Wykład 2: Liczby rzeczywiste (stało i zmiennoprzecinkowe) Koprocesor
UŁAMKI DZIESIĘTNE porównywanie, dodawanie i odejmowanie.
Pisemne dzielenie liczb naturalnych
B. znaki alfabetu D. obrazy
Systemy liczbowe w architekturze komputerów materiał do wykładu 1/3
SYSTEMY LICZBOWE.
dr Anna Kwiatkowska Instytut Informatyki
Zapis informacji Dr Anna Kwiatkowska.
Ułamki zwykłe i liczby mieszane.
Reprezentacje - zmiennoprzecinkowa
Systemy liczbowe.
„Są plusy dodatnie i plusy ujemne.”
Kod Graya.
Aleksandra Duchnowicz kl. 6.d
Technika Mikroprocesorowa 1
Technika Mikroprocesorowa 1
opracowanie: Agata Idczak
Informatyka I Język ANSI C
Wyrażenia algebraiczne
Cyfrowe układy logiczne
Podstawy informatyki (2)
Reprezentacja stało i zmiennopozycjna
A. Sumionka. Starodawna gra marynarska; Gra dwu i wieloosobowa; Gracze wykonują ruchy naprzemian; Złożona ze stosów, w których znajduje się pewna ilość
Architektura komputerów
ZASADY PODZIAŁU SIECI NA PODSIECI, OBLICZANIA ADRESÓW PODSIECI,
Jednostki w informatyce i system binarny (dwójkowy)
System dwójkowy (binarny)
Dane INFORMACYJNE Nazwa szkoły:
Systemy liczbowe.
Systemy Liczenia - I Przez system liczbowy rozumiemy sposób zapisywania i nazywania liczb. Rozróżniamy: pozycyjne systemy liczbowe i addytywne systemy.
Ułamki dziesiętne Dawid Kubaczka kl. 5 „c” uczący: Ewa Szering.
Architektura systemów komputerowych
Liczby całkowite dodatnie BCN
Systemy Liczbowe (technika cyfrowa)
  Prof.. dr hab.. Janusz A. Dobrowolski Instytut Systemów Elektronicznych, Politechnika Warszawska.
Posługiwanie się systemami liczenia
Podstawy informatyki 2013/2014
„Wszystko powinno być wykonane tak prosto jak to możliwe, ale nie prościej.” Albert Einstein.
Stało- i zmiennopozycyjna reprezentacja liczb binarnych
Matematyka i system dwójkowy
EcoCondens Kompakt BBK 7-22 E.
Reprezentacja liczb w systemie binarnym ułamki i liczby ujemne
Testogranie TESTOGRANIE Bogdana Berezy.
Podstawy arytmetyki komputerowej Paweł Perekietka
Jak Jaś parował skarpetki Andrzej Majkowski 1 informatyka +
Programowanie Niskopoziomowe
WYKŁAD 3 Temat: Arytmetyka binarna 1. Arytmetyka binarna 1.1. Nadmiar
Dwójkowy system liczbowy
Działania w systemie binarnym
Podstawy Techniki Cyfrowej
Elementy geometryczne i relacje
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Systemy liczenia IV Kodowanie i kody Danuta Stanek.
Wybrane aspekty programowania w C++ (i nie tylko)
Zasady arytmetyki dwójkowej
METODY REPREZENTOWANIA IFORMACJI
INFORMATYKA Zajęcia organizacyjne Arytmetyka komputerowa
i jej zastosowanie w praktyce
Liczbami naturalnymi nazywamy liczby 0,1,2,3,..., 127,... Liczby naturalne poznaliśmy już wcześniej; służą one do liczenia przedmiotów. Zbiór liczb.
URZĄDZENIA TECHNIKI KOMPUTEROWEJ Zapis liczb binarnych ze znakiem.
Podstawy Informatyki.
Technika Mikroprocesorowa 1
Zapis prezentacji:

Stało- i zmiennopozycyjna reprezentacja liczb binarnych ₥@ʁ€₭ ‽ud3£k0 Urządzenia Techniki Komputerowej

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.

Reprezentacja liczb w systemie komputerowym Ile jest liczb rzeczywistych? Ile liczb zmieści się w pamięci komputera?

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

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?

Reprezentacje liczb z częścią ułamkową Zapis stałoprzecinkowy Zapis zmiennoprzecinkowy

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 10110011, 0101

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

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.

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

2. Zamiana części całkowitej na binarną Dzielna Dzielnik Reszta z dzielenia 10 :2 5 1 2 1010=10102

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

4. Połączenie liczb Uzyskane liczby binarne scalamy w jedną. Część całkowita 10 1010 Część ułamkowa 0,225 0,0011100110 10,225 1010, 0011100110

Ć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

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

URZĄDZENIA TECHNIKI KOMPUTEROWEJ

Zamiana liczb binarnych na dziesiętne Przykład Obliczyć wartość liczby dwójkowej 11101,011B 11101,0112 = 1 * 2-3 + 1 * 2-2 + 0 * 2-1 + 1 * 20 + 0 * 21 + 1 * 22 + 1 * 23 + 1 * 24 11101,0112 = 1 * 1/8 + 1 * 1/4 + 0 * 1/2 + 1 * 1 + 0 * 2 + 1 * 4 + 1 * 8 + 1 * 16 11101,0112  = 1/8 + 1/4 + 1 + 4 + 8 + 16 11101,0112 = 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

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).

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.

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.

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 mantysa e = -1 m = -1,75 LFP = m*2e LFP = -1,75 * 2-1 = -1,75 * ½ = -1,75 * 0,5 = - 0,875

Zadanie - ćwiczenie Oblicz wartość liczby 00010101B 01010110B M 01,00 m = 0*(-21) + 1*20 + 0*2-1 +0*2-2 = 0+1+0+0=1 LFP = 1*21=2

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 = 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

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

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).

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.

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 = -4.25 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

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/4 1/16 1/64 itd. 1/223 1/2 1/8 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)

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

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 = 127 + w = 130  10000010 14.5/23 = 1.8125 odejmujemy 1 i otrzymujemy 0.8125 0.8125-1/2=0.3125 bit22 = 1 0.3125-1/4=0.0625 bit21 = 1 0.0625-1/8= -0.0625 bit20 = 0 ignorujemy operację 0.0625-1/16= 0.0 bit19 = 1 Pozostałe bity mantysy = 0 01000001011010000000000000000000 wykładnik mantysa znak

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

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* 10-16  15-16 cyfr po przecinku Rozszerzona podwójna precyzja Mantysa ma 64 bity 1/264 ≈ 5.4* 10-20  19 cyfr po przecinku

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 97 - 122 Pozostałe kody: Kropka, przecinek, itd… 33-47, 58-64, 91-96, 123-127 Np. Litera W: 01010111 kod binarny 87 Kod znaku Znak ASCII (American Standard Code for Information Interchange)

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 65536 znaków.