Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy Wałaszek |
©2024 mgr Jerzy Wałaszek
|
Metodę obliczania wartości liczb stałoprzecinkowych opisaliśmy dokładnie w jednym z wcześniejszych rozdziałów. Po przecinku wagi pozycji są kolejnymi ujemnymi potęgami podstawy, zatem:
Zapamiętaj:Wartość dziesiętna stałoprzecinkowej liczby binarnej
gdzie: b - bit, cyfra dwójkowa 0 lub 1 |
Przykład:
Obliczyć wartość stałoprzecinkowej liczby dwójkowej 110101,111011(2).
Obliczamy wartość części całkowitej sumując wagi pozycji zawierających cyfrę 1:
Identycznie obliczamy wartość części ułamkowej:
Łączymy obie części w całość otrzymując wynik:
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:
Waga ostatniej pozycji wynosi 1/64, zatem
Łączymy część całkowitą z częścią ułamkową i otrzymujemy:
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:
W
= 1 W = (1 + 1) + 1 = 3 W = (3 + 3) + 0 = 6 W = (6 + 6) + 1 = 13 W = (13 + 13) + 0 = 26 W = (26 + 26) + 1 = 53 - część całkowita obliczona, kontynuujemy z częścią ułamkową W = (53 + 53) + 1 = 107 W = (107 + 107) + 1 = 215 W = (215 + 215) + 1 = 431 W = (431 + 431) + 0 = 862 W = (862 + 862) + 1 = 1725 W = (1725 + 1725) + 1 = 3451 - koniec części ułamkowej |
Otrzymany wynik mnożymy przez wagę ostatniej pozycji, czyli przez 1/64:
Odpowiedzmy sobie na pytanie: jaką największą liczbę można przedstawić za pomocą n bitów całkowitych i m bitów ułamkowych, gdzie n i m są liczbami naturalnymi ?
Liczbę stałoprzecinkową możemy potraktować jako złożenie dwóch liczb - całkowitej n-bitowej oraz ułamkowej m-bitowej.
Część całkowita dla n bitów przyjmuje największą wartość równą 2n - 1.
Część ułamkowa będzie największa, gdy wszystkie jej bity ustawione zostaną na
1. Dla m bitów wartość takiej liczby wyniesie
Łączymy obie części i otrzymujemy:
dla n
bitów całkowitych i m bitów ułamkowych największą liczbą jest |
Metodę wyznaczania reprezentacji stałoprzecinkowej liczby dziesiętnej w innym systemie pozycyjnym opisaliśmy w jednym z wcześniejszych rozdziałów.
Liczbę rozdzielamy na część całkowitą oraz część ułamkową. Część całkowitą przeliczamy na system dwójkowy wg metody podanej w rozdziale poprzednim.
Kolejne bity części ułamkowej otrzymujemy mnożąc ją przez dwa (lub dodając do siebie). Część całkowita wyniku jest kolejną cyfrą binarną. Do następnych obliczeń bierzemy część ułamkową wyniku. Operację kontynuujemy dotąd, 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 · 2 = | 1,29 | - cyfra 1 |
0,29 · 2 = | 0,58 | - cyfra 0 |
0,58 · 2 = | 1,16 | - cyfra 1 |
0,16 · 2 = | 0,32 | - cyfra 0 |
0,32 · 2 = | 0,64 | - cyfra 0 |
0,64 · 2 = | 1,28 | - cyfra 1 |
0,28 · 2 = | 0,56 | - cyfra 0 |
0,56 · 2 = | 1,12 | - cyfra 1 |
0,12 · 2 = | 0,24 | - cyfra 0 |
0,24 · 2 = | 0,48 | - cyfra 0 |
0,48 · 2 = | 0,96 | - cyfra 0 |
0,96 · 2 = | 1,92 | - cyfra 1 |
0,92 · 2 = | 1,84 | - cyfra 1 |
0,84 · 2 = | 1,68 | - cyfra 1 |
0,68 · 2 = | 1,36 | - cyfra 1 - koniec, mamy 15 cyfr ułamkowych |
Łą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).
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 2m, 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ą.
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 210 = 1024, zaokrąglamy w dół do wartości całkowitej i przeliczamy na system dwójkowy:
[154,35 · 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) :
Spróbuj uzasadnić poprawność tej metody.
Analizując podane przykłady dochodzimy do wniosku, iż nie zawsze da się dokładnie przedstawić liczbę dziesiętną w systemie binarnym. Czasem otrzymujemy rozwinięcia nieskończone (okresowe). Jeśli rozwinięcie binarne posiada ograniczoną ilość cyfr ułamkowych, to wynik konwersji może być obarczony błędem zaokrąglenia - (ang. rounding error, zwany również błędem obcięcia - cancellation error).
Błąd bezwzględny (ang. absolute error) jest modułem różnicy wartości dokładnej i wartości otrzymanej liczby binarnej. Jeśli błąd ten wynosi 0, to liczba binarna dokładnie przedstawia daną wartość. W przeciwnym razie wartość binarna jest przybliżeniem wartości dokładnej.
gdzie Δe - błąd bezwzględny Wd - wartość dokładna, dziesiętna Wb - wartość binarna po konwersji |
Dla m bitów ułamkowych zawsze zachodzi (przeanalizuj sposób uzyskiwania cyfr ułamkowych):
Wynika z tego, iż błąd bezwzględny jest mniejszy od wagi najmniej znaczącej cyfry liczby binarnej.
Błąd względny (ang. relative error) powstaje po podzieleniu błędu bezwzględnego przez wartość dokładną:
gdzie δe - błąd względny Δe - błąd bezwzględny Wd - wartość dokładna, różna od 0 |
Błąd względny pozwala nam się zorientować, jak dokładnie liczba binarna przedstawia zadaną wartość. Na przykład, jeśli błąd względny wyniesie 0,25, to znaczy, iż 1/4 wartości jest niedokładna. To czasem może być nie do przyjęcia!
Błąd względny można również wyrażać procentowo mnożąc δe przez 100:
Przykład:
Obliczyć błąd bezwzględny i względny rozwinięcia dwójkowego o 5 bitach ułamkowych dla liczby 0,3(10).
Wyznaczamy rozwinięcie dwójkowe wg jednej z opisanych wcześniej metod:
0,3(10) = 0,01001(2) |
Obliczamy wartość otrzymanej liczby binarnej:
Wyznaczamy błędy:
Wd = 0,3 Wb = 0,28125 Δe = |Wd - Wb | = |25,3 - 25,28125| = 0,01875 - błąd bezwzględny δe = Δe / |Wd | = 0,01875 / |0,3| = 0,0625 - błąd względny δe% = δe · 100% = 0,0625 · 100% = 6,25% - błąd względny procentowy |
Obliczyć wartość dziesiętną następujących liczb dwójkowych:
Przeliczyć podane liczby dziesiętne na zapis dwójkowy:
Wyznaczyć 100 cyfr ułamkowych dwójkowego rozwinięcia liczby dziesiętnej 0,8(10).
Wyznacz błąd względny i bezwzględny rozwinięcia dwójkowego liczby dziesiętnej 0,2(10) o dokładności 10 binarnych cyfr ułamkowych.
Zobacz dalej...
Kody binarne | Naturalny system dwójkowy | Operacje arytmetyczne w systemie dwójkowym | Operacje logiczne na bitach | Konwersje dwójkowo ósemkowe i szesnastkowe
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2024 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.