Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Systemy liczbowe - binarna znormalizowana postać zmiennopozycyjna
no-scared
post 1.11.2009, 09:12:59
Post #1





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 24.04.2008

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Zbłąkany
post 1.11.2009, 09:40:13
Post #2


Administrator serwera


Grupa: Developerzy
Postów: 521
Pomógł: 13
Dołączył: 2.04.2004
Skąd: 52°24' N 16°56' E

Ostrzeżenie: (0%)
-----


A pytałeś wujka Google o pomoc? Bo ja zapytałem i na drugim miejscu dostałem to tongue.gif


--------------------
Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox
Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..."
Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL"
Go to the top of the page
+Quote Post
no-scared
post 1.11.2009, 10:39:52
Post #3





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 24.04.2008

Ostrzeżenie: (0%)
-----


Hmm... coś próbowałem zrobić, czy ktoś byłby na tyle miły, żeby sprawdzić czy dobrze smile.gif?

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

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.06.2025 - 19:02