LICZBY ZMIENNOPRZECINKOWE



Podobne dokumenty
LICZBY ZMIENNOPRZECINKOWE

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

Liczby rzeczywiste są reprezentowane w komputerze przez liczby zmiennopozycyjne. Liczbę k można przedstawid w postaci:

Podstawy Informatyki

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

Arytmetyka binarna - wykład 6

Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Pracownia Komputerowa wykład VI

Kod IEEE754. IEEE754 (1985) - norma dotycząca zapisu binarnego liczb zmiennopozycyjnych (pojedynczej precyzji) Liczbę binarną o postaci

Reprezentacja stałoprzecinkowa. Reprezentacja zmiennoprzecinkowa zapis zmiennoprzecinkowy liczby rzeczywistej

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

Teoretyczne Podstawy Informatyki

Adam Korzeniewski p Katedra Systemów Multimedialnych

Pracownia Komputerowa wyk ad VI

ARCHITEKTURA KOMPUTERÓW Liczby zmiennoprzecinkowe

Pozycyjny system liczbowy

Naturalny kod binarny (NKB)

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Adam Korzeniewski p Katedra Systemów Multimedialnych

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 2 WSTĘP DO INFORMATYKI

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Zwykle liczby rzeczywiste przedstawia się w notacji naukowej :

Zapis liczb binarnych ze znakiem

System liczbowy jest zbiorem reguł określających jednolity sposób zapisu i nazewnictwa liczb.

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Arytmetyka stało i zmiennoprzecinkowa

Wstęp do programowania. Reprezentacje liczb. Liczby naturalne, całkowite i rzeczywiste w układzie binarnym

Technologie Informacyjne Wykład 4

RODZAJE INFORMACJI. Informacje analogowe. Informacje cyfrowe. U(t) U(t) Umax. Umax. R=(0,Umax) nieskończony zbiór możliwych wartości. Umax.

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Technologie Informacyjne

Wielkości liczbowe. Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

Podstawy Informatyki

ZADANIE 1. Rozwiązanie:

Architektura komputerów

Metoda znak-moduł (ZM)

Systemy zapisu liczb.

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łan Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn

Architektura komputerów

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Wielkości liczbowe. Wykład z Podstaw Informatyki. Piotr Mika

MNOŻENIE W SYSTEMACH UZUPEŁNIENIOWYCH PEŁNYCH (algorytm uniwersalny)

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

Kod U2 Opracował: Andrzej Nowak

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

Mikroinformatyka. Koprocesory arytmetyczne 8087, 80187, 80287, i387

INFORMATYKA. Zajęcia organizacyjne. Arytmetyka komputerowa.

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

DYDAKTYKA ZAGADNIENIA CYFROWE ZAGADNIENIA CYFROWE

Informatyka 1. Wykład nr 5 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Kurs ZDAJ MATURĘ Z MATEMATYKI MODUŁ 2 Teoria liczby rzeczywiste cz.2

Pracownia Komputerowa wykład V

Arytmetyka stałopozycyjna

Podstawy Informatyki. Wykład 2. Reprezentacja liczb w komputerze

Kodowanie liczb całkowitych w systemach komputerowych

Arytmetyka liczb binarnych

Kodowanie informacji. Kody liczbowe

BŁĘDY OBLICZEŃ NUMERYCZNYCH

1.1. Pozycyjne systemy liczbowe

Prefiksy binarne. kibibit (Kibit) mebibit (Mibit) gibibit (Gibit) tebibit (Tibit) pebibit (Pibit) exbibit (Eibit) zebibit (Zibit) yobibit (Yibit)

4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

architektura komputerów w. 2

Wprowadzenie do informatyki - ć wiczenia

Wstęp do informatyki- wykład 1 Systemy liczbowe

Architektura komputerów

Architektura komputerów Reprezentacja liczb. Kodowanie rozkazów.

Operacje arytmetyczne

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

Luty 2001 Algorytmy (7) 2000/2001

Wstęp do informatyki- wykład 1 Systemy liczbowe

Wstęp do Informatyki

W jaki sposób użyć tych n bitów do reprezentacji liczb całkowitych

Języki i metodyka programowania. Reprezentacja danych w systemach komputerowych

Informatyka kodowanie liczb. dr hab. inż. Mikołaj Morzy

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Metody numeryczne. Janusz Szwabiński. nm_slides.tex Metody numeryczne Janusz Szwabiński 2/10/ :02 p.

PRZELICZANIE JEDNOSTEK MIAR

SYSTEMY LICZBOWE 275,538 =

Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia:

Metody numeryczne I. Janusz Szwabiński. Metody numeryczne I (C) 2004 Janusz Szwabiński p.1/61

Wstęp do Informatyki. Reprezentacja liczb w komputerze Arytmetyka stało- i zmiennoprzecinkowa Przechowywanie danych pliki i foldery

DZIAŁANIA NA UŁAMKACH DZIESIĘTNYCH.

Stan wysoki (H) i stan niski (L)

0 + 0 = 0, = 1, = 1, = 0.

SYSTEMY LICZBOWE. SYSTEMY POZYCYJNE: dziesiętny (arabski): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 rzymski: I, II, III, V, C, M

Wprowadzenie do informatyki - ć wiczenia

Cyfrowy zapis informacji

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

Arytmetyka stało- i zmiennoprzecinkowa. 1. Informacje wstępne

Dodatek do Wykładu 01: Kodowanie liczb w komputerze

Informatyka 1. Wykład nr 4 ( ) Plan wykładu nr 4. Politechnika Białostocka. - Wydział Elektryczny

Wstęp do informatyki- wykład 2

Pracownia komputerowa. Dariusz Wardecki, wyk. VI

O systemach liczbowych

Transkrypt:

LICZBY ZMIENNOPRZECINKOWE Liczby zmiennoprzecinkowe są komputerową reprezentacją liczb rzeczywistych zapisanych w formie wykładniczej (naukowej). Aby uprościć arytmetykę na nich, przyjęto ograniczenia zakresu mantysy i eksponenty oraz wprowadzono inne założenia, które reguluje norma IEEE 754 (dla liczb zapisanych w kodzie dwójkowym). Liczbę zapisuje się jako ciąg zer i jedynek przyjmując umowny podział na pola : w jednostce zmiennoprzecinkowej S E M G R X/S znak wykładnik w kodzie spolaryzowanym ułamek bity specjalne podział liczby zmiennoprzecinkowej na pola S znak, jest zawsze jedno bitowy i ma wartość 0 jeśli liczba jest dodatnia lub 1 jeśli jest ujemna E wykładnik (inaczej: eksponent, cecha), ma długość zależną od długości całej liczby i kodowane jest w kodzie 2 k- 1-1 M moduł (inaczej mantysa) ułamka. Ma wartość z przedziału [1,2). Zapisuje się go bez poprzedzającej go jedynki z kropką (tzw. bit ukryty). Innymi słowy, zapisujemy jedynie część ułamkową modułu przyjmując, że zawsze (pomijając wyjątki, o których później) część całkowita wynosi 1. Bity specjalne występują jedynie w wewnętrznej reprezentacji liczy w jednostce zmiennoprzecinkowej i wykorzystywane są do zniwelowania efektu utraty dokładności przy wykonywaniu działań, przez zaokrąglenie. Zarówno liczba wejściowa jak i wyjściowa takiego układu nie posiada tych bitów. Oznacza to, że liczby 32/64/128 bitowe, w jednostce zmiennoprzecinkowej, po uzupełnieniu bitami specjalnymi, maja długość odpowiednio 35/67/131 bitów. G bit ochrony (guard) R bit zaokrąglenia (round) X - rozmiar liczby wykładnik E moduł ułamka M nazwa 32 8 23 single 64 11 52 double 128 16 111 extended długości poszczególnych pól (w bitach) Wartość reprezentowaną przez liczbę określa się wg wzoru: x = S 1 M 2 E PRZYKŁADY: a) 0 0100 0100 111 1100 1010 0010 0111 1100 = 1,111110010100 01001111100 2 59 = 1 1,8168060 2 59 DŁUGOŚĆ: 32 bity s (1 bit) = 0 (liczba dodatnia) E (8 bit) = 0100 0100 = 68-127= -59 M = 1,111 1100 1010 0010 0111 1100 2 = 1,8168060 10 b) 1 0100 0100 111 1100 1010 0010 0111 1100 = 1,11111001010 001001111100 2 59 = 1 1,8168060 2 59 DŁUGOŚĆ: 32 bity s (1 bit) = 1 (liczba ujemna) E (8 bit) = 0100 0100 = 68-127= -59 M = 1,111 1100 1010 0010 0111 1100 2 = 1,8168060 10 c) 0 0111 1111 000 0000 0000 0000 0000 0000 = 1 1,0 2 0 = 1 DŁUGOŚĆ: 32 bity s (1 bit) = 0 (liczba dodatnia) E (8 bit) = 0111 1111 = 127-127 = 0 M = 1,000 0000 0000 0000 0000 0000 2 = 1,0 10

Przekodowanie liczb w systemie 2 k-1-1 na U2 TIPS & TRICKS czyli jak ułatwić sobie życie (czytaj: obliczenia) Po co? Ano dla tego, że kochamy U2, w nim wszystko jest proste i traktujemy ten kod prawie tak samo naturalnie jak zwykły dziesiętny. Co nam to ułatwi? Np. dzielenie przez dwa wykonywane przy pierwiastkowaniu. Więc do rzeczy... Przekodowanie liczby z zachowaniem znaku jest trudniejsze a nam zachowanie znaku nie jest potrzebne (jak dodamy/odejmiemy dwie liczby ujemne lub podzielimy liczbę ujemna a potem zmienimy znów znak to co do modułu utrzymamy ten sam wynik) więc będziemy przekodowywać ze zmianą znaku. Sprawa jest niezwykle banalna należy zanegować wszystkie bity poza najstarszym (najmniej znaczącym albo, jak kto woli, tym najbardziej na lewo). Oto przykład: NB 2 k-1-1 U2 (liczba przeciwna) k 10 10+127=137 10=10001001 11110110 U2=-10 10 8-25 -25+127=102 10=01100110 00011001 U2=25 10 8 0 0+127=127 10=01111111 00000000 U2=0 10 8 Zmiana znaku liczb w systemie 2 k-1-1: Jak zostało pokazane powyżej, negacja wszystkich bitów poza najstarszym zmienia liczbę na U2 o przeciwnym znaku. Operacja odwrotna również zmienia znak więc możemy wykonać następujący algorytm: przekodowanie liczby na U2 (negacja wszystkich bitów poza pierwszym) zmiana znaku (negacja wszystkich bitów i dodanie 1) przekodowanie na 2 k-1-1 (negacja wszystkich bitów poza pierwszym) Algorytm ten można jednak zoptymalizować. Pierwszy bit zanegowany jest raz a wszystkie pozostałe 3 krotnie. Podwójne zanegowanie nie daje żadnego rezultatu więc ostatecznie wszystkie bity są negowane tylko raz. Po przekodowaniu na U2 dodajemy jedynkę a później negujemy więc w ostatecznym rozrachunku jedynka ta jest odejmowana. Po uwzględnieniu tych faktów napisać można zoptymalizowany algorytm: zanegować wszystkie bity odjąć 1 od najmłodszego bitu Przykład: NB 2 k-1-1 zanegowana odjęte 1 k 10 10+127=137 10=10001001 01110110 01110101=117-127 = -10 10 8-25 -25+127=102 10=01100110 10011001 10011000=152-127 = 25 10 8 0 0+127=127 10=01111111 10000000 01111111=127-127 = 2 10 8 sposób 2: W systemie z obciążeniem wartość powiększona jest o liczbę O (będącą właśnie tym obciążeniem). W związku z tym nasza liczba x przedstawiona jest jako: E = x + O My chcemy znaleźć liczbę -x na podstawie danej nam liczby E i zapisać ją również w z obciążeniem. Szukana przez nas wartość powinna wynosić: -x + O = -(x + O) + 2O = -E + 2O = 2O E Wynika z tego, że aby zmienić znak liczby w kodzie z obciążeniem musimy ją odjąć od podwojonego obciążenia. Brzmi to trudniej niż jest w rzeczywistości. Dla liczb zmiennoprzecinkowych używamy obciążenia 2 k-1-1 (gdzie k to liczba bitów przypadających na eksponentę. Dla standardu pojedynczej precyzji (8 bit na wykłądnik) obciążenie O=127 10=01111111 2. Pomnożenie liczby przez 2 to przesunięcie jej o jedną pozycję w lewo więc 2O=11111110 2. I od tej liczby należy odjąć naszą wartość obciążoną by dostać jej wartość przeciwną.

KODY SPECJALNE Do pewnych specjalnych zastosowań zarezerwowano kody, w których wykładnik ma wartość minimalną (same zera) lub maksymalną (same jedynki). ZERO: Ponieważ przy założeniu, że mantysa jest znormalizowana (ma wartość z przedziału [1,2)), nie da się zapisać zera, na tą liczbę zarezerwowano specjalne kody, w których wszystkie bity poza pierwszym (S) są zerami. Wyróżnia się więc zero dodatnie (przykład dla liczb 32-bitowych): +0 = 0 0000 0000 000 0000 0000 0000 0000 0000 I zero ujemne (przykład dla liczb 32-bitowych): -0 = 1 0000 0000 000 0000 0000 0000 0000 0000 LICZBY BLISKIE ZERU: Kolejną konsekwencją normalizacji mantysy jest to, że nie da się zapisać liczb z przedziału (-2 Emin, +2 Emin ). Na potrzeby tych liczb, zarezerwowano kody, w których wykładnik jest równy zero ale mantysa jest różna od zera. W przypadku tych liczb, przyjmuje się, że mantysa ma bit ukryty równy 0 a nie 1 ( 0<M<1 ), wykładnik jest natomiast równy -2 k-1 +2. Przykłady: a) 0 0000 0000 111 1100 1010 0010 0111 1100 = 1 0,8168060 2 126 M = 0,111 1100 1010 0010 0111 1100 2 = 0,8168060 10 E (8 bit) = 0000 0000 = -126!! a) 1 0000 0000 111 1100 1010 0010 0111 1100 = 1 0,8168060 2 126 M = 0,111 1100 1010 0010 0111 1100 2 = 0,8168060 10 E (8 bit) = 0000 0000 = -126 NIE-LICZBY: Nie-liczby (NaN Not A Number) to kody reprezentujące wyniki niedające się zakodować w postaci liczby zmiennoprzecinkowej (np. wynik pierwiastkowania kwadratowego liczby ujemnej). Nie-liczbę kodujemy za pomocą liczby z wykładnikiem składającym się z samych jedynek i modułem różnym od zera. Wyróżnia się nie-liczby ciche (QNaN) wytwarzane sprzętowo oraz nie-liczby sygnalizacyjne (SNaN) generowane w programie obsługi wyjątku. Pierwsze charakteryzują się kodem ułamka zaczynającym się od 1xxxx a drugie kodem ułamka zaczynającym się od 0xxxx. Przykład kodów NaN (dla liczb 32-bitowych): 1 1111 1111 111 1111 1111 1111 1111 1111 (QNaN) 0 1111 1111 000 0000 0000 0000 0000 0001 (SNaN) NIESKOŃCZONOŚCI: Za pomocą liczb zmiennoprzecinkowych można również zakodować nieskończoności. Kodem zarezerwowanym dla tych wartości jest wykładnik składający się z samych jedynek i moduł z samych zer. Wyróżnia się minus nieskończoność (przykład dla kodu 32-bitowego): - = 1 1111 1111 000 0000 0000 0000 0000 0000 Plus nieskończoność (przykład dla kodu 32-bitowego): = 0 1111 1111 000 0000 0000 0000 0000 0000 PODSUMOWANIE: Wykładnik Mantysa Rodzaj liczby 00...00 00...00 zero 00...00 >0 Liczby bliskie zeru 11...11 1x...xx QNaN 11...11 0x...xx SNaN 11...11 00...00 Nieskończoność

DZIAŁANIA ARYTMETYCZNE NA LICZBACH ZMIENNOPRZECINKOWYCH Aby zrozumieć algorytmy działań arytmetycznych na liczbach zmiennoprzecinkowych należy wyobrazić je sobie w postaci wykładniczej: x=m*b E i odnieść się do praw arytmetyki działających na liczbach takiej postaci. DODAWANIE/ODEJMOWANIE: Z postaci liczb zmiennoprzecinkowych wynika lekka komplikacja przy operacjach dodawania/odejmowania. Aby je wykonać należy najpierw sprowadzi składniki do wspólnego wykładnika. Weźmy dwie liczby: x 1=M 1*B E1 x 2=M 2*B E2 Jako, że dodawanie jest przemienne (a odejmowanie to też dodawanie) przyjmijmy, że E1>E2. Wynik otrzymujemy wg wzoru: x 1 ± x 2 = M 1*B E1 + M 2*B E2 = (M 1*B E1-E2 + M 2)*B E2 Po wykonaniu tych działań może okazać się konieczna normalizacja wyniku. MNOŻENIE: W przeciwieństwie do dodawania/odejmowania mnożenie liczb w postaci zmiennoprzecinkowej jest banalne. Dla liczb: x 1=M 1*B E1 x 2=M 2*B E2 wynik mnożenia wynosi: x 1*x 2 = (M 1*B E1 ) * (M 2*B E2 ) = (M 1*M 2)*(B E1 *B E2 ) = (M 1*M 2)*B E1+E2 Po wykonaniu tych działań może okazać się konieczna normalizacja wyniku DZIELENIE: Dzielenie jest bardzo podobne do mnożenia: x 1/x 2 = (M 1*B E1 ) / (M 2*B E2 ) = (M 1/M 2)*(B E1 / B E2 ) = (M 1 / M 2)*B E1-E2 Po wykonaniu tych działań może okazać się konieczna normalizacja wyniku. OBLICZANIE ODWROTNOŚCI: Weźmy liczbę: x=m*b E jej odwrotność wynosi: 1/x = x -1 = (M*B E ) -1 = M -1 * B -E = 1/M * B -E Wynika z tego, że musimy osobno obliczyć odwrotność M i B E. Policzenie odwrotności ostatniej nie powinno stanowić problemu ponieważ polega jedynie na zmianie znaku wykładnika (opisane wcześniej). Trochę gorzej jest z odwrotnością mantysy. Aby obliczyć odwrotność mantysy wykorzystamy własność: 1 x 1 1 x dla x 0 Nasza mantysa jest liczbą w postaci 1+X (gdzie X to odczytana wprost wartość mantysy bez uwzględnienia ukrytej jedynki). Możemy więc rozpatrzyć z osobna dwa przypadki: X 0 : Jeśli tak to możemy bezpośrednio skorzystać z podanego wyżej prawa i zapisać M -1 =(1+X) =1 =1-X Obliczenie odwrotności możemy więc obliczyć w 3 krokach: negacja wszystkich bitów mantysy dodanie 1 na najmłodszym bicie normalizacja otrzymanej odwrotności (otrzymamy liczbę w postaci 0,xxxx więc trzeba przeskalować ją do postaci 1,xxxx jednocześnie odpowiednio zmniejszając wykładnik)

X 1 W takim wypadku możemy mantysę zapisać w postaci 2-X zamiast 1+X, w związku z tym nasza liczba ma wartość: 2 X 2 E =2 1 X 2 E = 1 X 2 E 1 A jej odwrotność: [ 1 X 2 E 1 ] 1 E 1 = 1 X 2 Wynika z tego również, że liczba wynikowa będzie już znormalizowana. Dla nas oznacza to jednak, że aby obliczyć odwrotność mantysy musimy jedynie: podzielić mantysę przez 2 (przesunąć o jedną pozycję w prawo) uwzględniając bit ukryty dodaj 2 do mantysy i zaneguj ją w wyniku otrzymujemy liczbę postaci 1,xxxx więc nie potrzebna jest normalizacja. Poznane metody są przybliżonymi i będą sprawdzać się jedynie przy liczbach bliskich minimum i maksimum wartości mantysy. W innych nie możemy ich stosować ale na dziś nie chce mi się więcej pisać. OBLICZANIE PIERWIASTKA KWADRATOWEGO: Liczby zmiennoprzecinkowe mają za zadanie przechowywać liczby rzeczywiste więc pierwiastkowanie liczb ujemnych jest niewykonalne. W związku z tym, pierwszy bit (bit znaku S) powinien być równy 0. W przeciwnym wypadku wynikiem działania będzie zawsze NaN. Jego postać zależy od implementacji. W przypadku, gdy wykładnik jest parzysty sprawa jest prosta: M B 2n = M B n Gorzej jest gdy wykładnik nie jest parzysty ponieważ nie możemy łatwo spierwiastkować B E.. W takim wypadku możemy przeskalować mantysę zmniejszając lub zwiększając wykładnik o jeden (dzięki czemu będzie on parzysty). Lepszym pomysłem jest zmniejszenie wykładnika dzięki czemu w wyniku pierwiastkowania otrzymamy już liczbę znormalizowaną i nie trzeba będzie jej znów skalować. Przykłady: a) 0 0100 0100 111 1100 1010 0010 0111 1100 = 1,111 1100 1010 0010 0111 1100 2 59 Wartość liczby zmiennoprzecinkowej: E (8 bit) = 0100 0100 = 68-127= -59 M = 1,111 1100 1010 0010 0111 1100 Wykładnik jest nieparzysty co oznacza, że nie możemy z niego łatwo wyciągnąć pierwiastka więc przeskalujemy mantysę. Zwiększy to wykładnik nie zmieniając wartości liczby więc możemy w ten sposób doprowadzić wykładnik do liczby parzystej. 1,111 110010100010 01111100 2 59 = 11,11110010 10001001111100 2 60 = = 11,1111001010001001111100 2 60 = 1,1111100 2 30 = = 00110 000111111000000 000000000000 Pierwiastek modułu przeskalowanego o 1 w prawo: 1 1, 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 1 1 1 1 1 = 1, 1 1 1 1 1 0 0-1 1 0 1 1-1 0 1 1 1 0 1 1-1 1 0 1 1 1 1 0 0 0-1 1 1 0 1 1 1 0 1 1 1 0-1 1 1 1 0 1 1 1 0 0 0 1 1 0-1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 0-1 1 1 1 1 1 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 nowy wykładnik: -30+127 = 97 = 0110 0001 2

b) 0 0100 0101 111 1100 1010 0010 0111 1100 = 1,111 1100 1010 0010 0111 1100 2 58 Wartość liczby zmiennoprzecinkowej: E (8 bit) = 0100 0101 = 69-127= -58 M = 1,111 1100 1010 0010 0111 1100 Tutaj wykładnik jest parzysty więc po prostu wykonamy zwykłe pierwiastkowanie na module i na spotęgowanej podstawie systemu (czyli dwójce): 1,111 110010100010 01111100 2 58 = 1,011001 2 29 = = 00110 00100110010 00000000 00000000 Wynik jest już znormalizowany więc nie musimy go skalować. Pierwiastek z modułu: 1, 1 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 1 1 1 1 1 = 1, 0 1 1 0 0 1 1 0 1 1 1 1-1 0 0 1 0 1 1 0 1 0-1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0-1 0 1 1 0 0 0 1 1 0 1 0 0 0 1 1 nowy wykładnik: -29+127 = 98 = 0110 0010 2