no-scared
1.11.2009, 09:12:59
Witam.
Zajmuję się dalej systemami liczbowymi, większość już rozumiem, ale natknąłem się na dość skomplikowane:
Zapisz w binarnej znormalizowanej postaci zmiennopozycyjnej liczbę 0,663 * 10^(-35). Otrzymany wynik uzasadnij.
Jak ugryźć takiego potwora?
Zbłąkany
1.11.2009, 09:40:13
A pytałeś wujka Google o pomoc? Bo ja zapytałem i na drugim miejscu dostałem
to
no-scared
1.11.2009, 10:39:52
Hmm... coś próbowałem zrobić, czy ktoś byłby na tyle miły, żeby sprawdzić czy dobrze

?
0.663 * 10^-35 = 663 * 10^-38 Pierwszym krokiem jest przekształcenie wyrażenia na system binarny 663 = (1010010111)2 Musimy uzyskać wyrażenie ułamkowe, więc mnożymy i dzielimy wynik razy 2^10 (1010010111)2 = (0.1010010111)2 * 2^10 Potrzebujemy jeszcze 10^(-38) w postaci binarnej. Log (10^(-38))=-38 Log_2 [logarytm o podstawie 2](10^(-38)) / Log_2(10) = -38 Log_2 (10^(-38)) = -38 * Log_2(10) = -126 10^(-38) = 2^(-126) Otrzymujemy zatem: 0.663 * 10^-35 = (-1)^0 *(0.1010010111)2 * 2^10 * 2 ^(-126) = (-1)^0 *(0.1010010111)2 * 2 ^(-116) Binarny zapis zmiennopozycyjny znormalizowany w komputerze wygląda następująco: 1 bit – opisuje znak liczby 8 bitów – cecha liczby (potęga dwójki ) podniesiona o 127 23 bity – ułamek Zatem nasza liczba zapisana będzie następująco: //bin(127 – 116) = bin(11) = 1011 // Wynik: 0 00001011 10100101110000000000000