Robert B. Napisano 7 Luty 2008 Napisano 7 Luty 2008 Witam dostałem zadanko do wyliczenia ale nie umiem go wyliczyc Jaką wartość zapisano w komórce, jeżeli jest to liczba FPU o schemacie: 1bit znaku. 5 bitów cechy U2, 10 bitów mantysy znormalizowanej? 0110010101010111
delf77 Napisano 7 Luty 2008 Napisano 7 Luty 2008 jesli trzebaby to przeliczyc na system dziesietny z binarnego to bym umial ale ///ta tresc mnie przeraza :)
sanki Napisano 7 Luty 2008 Napisano 7 Luty 2008 http://pl.wikipedia.org/wiki/Liczba_zmiennoprzecinkowa
chveti Napisano 7 Luty 2008 Napisano 7 Luty 2008 nie wiem co to znaczy ale windowsowy kalkulator przelicza binarne. w dziesietnym to 25943.
piotrek Napisano 7 Luty 2008 Napisano 7 Luty 2008 Według mnie, jeśli się nie walnąłem, jest to 0,342e(-7). chveti - tak nie można przeliczać. To nie jest taka "normalna" liczba binarna. [edit] Albo 0,343e-7 ;)
err0r Napisano 7 Luty 2008 Napisano 7 Luty 2008 Wlasnie policzylem i z tego co pamietam z elektroniki cyfrowej wyszlo podobnie - a nawet tak samo jak Piotrkowi.
piotrek Napisano 7 Luty 2008 Napisano 7 Luty 2008 Masz liczbę 0110010101010111. Najsarszy bit to bit znaku (0), dalej - 5 bitów cechy (11001) i 10 bitów to matysa znormalizowana (0101010111). Bit znaku, czyli gdy jest 0, jest "+", gdzy jest 1 - "-". Cecha jest w U2, więc to jest (2^x oznacza 2 do potęgi x), czytając ją od końca: 1 * 2^0 + 0 * 2^1 + 0 * 2^2 + 1 * 2^3 + (-1) * 2^4 czyli -7. Mantysa ma 10 cyfr, więc podobnie, tyle że bez U2: 2^0 + 2^1 + 2^2 + 2^4 + 2^6 + 2^8 = 1 + 2 + 4 + 16 + 64 + 256 = 343. Ponieważ mantysa znormalizowana, oznacza to 0.343. Idea jest taka, że liczba w takim systemie to mantysa * 10^cecha, więc ostatecznie: 0.343 * 10^(-7). Chociaż w sumie to chyba powinno być 0.343 * 2^(-7), ponieważ jesteśmy w systemie binarnym. Zresztą nie wiem... Najlepiej dopytaj się kogoś.
Robert B. Napisano 7 Luty 2008 Autor Napisano 7 Luty 2008 Ok ale nie rozumiem dlaczego cyfr w cesze jest 5 tak 11001 to dlaczego w działaniu jest 6 działań w tym jedno z -1 I ponizej w mantysie jest działąń tylko 6 a ona przeciez składa sie z 10 cyfr
piotrek Napisano 7 Luty 2008 Napisano 7 Luty 2008 Liczbę w dowolnym systemie zpisujemy przy pomocy znaków (u nas są to cyfry arabskie 123456789. Równie dobrze mogłyby to być gwiazdki, kreseczki, kropeczki, krzaczki etc. ;) ): a b c d e f g h i j k System, którego używamy jest sytemem pozycyjnym, więc znaczenie każdego znaku/cyfry zależy od pozycji na jakiej się znajduje. Pozycje numerujemy od zera od prawej strony. I tak w powyższym przykładzie: "k" jest na pozycji 0, "j" na pozycji 1 itd. Wartość liczbową takiego wyrażenia oblicza się, jak następuje: k*base^0 + j * base^1 + i * base^2 + h * base^3 + ... + b * base^9 + a * base^10 base to podstawa systemu, tym wypadku jest to 2, gdyż jest sytem dwójkowy, w trójkowym byłoby 3, w dziesiętnym byłoby 10, w szesnastkowym 16. Ponieważ w systemie dwójkowym występują tylko dwie cyfry - 0 i 1 odpowiednie potęgi 2 mnoży się albo przez jeden, albo przez zero... Liczbę 10011 Można zapisać jako 1 * 2^0 + 1 * 2^1 + 0 * 2^2 + 0 * 2^3 + 1 * 2^4. Tak samo jest w poście wyżej, tylko po prostu tam pominąłem zera, bo zero pomnożone przez dowolną liczbę jest zero ;) Przykład w systemie dziesiętnym (trochę masło maślane, ale chyba jasne): Jest sobie liczba 496 zapisana w systemie dziesiętnym. Jej wartość można wyliczyć rozkładając ją w wielomian, jak powyżej: 6 * 10^0 + 9 * 10^1 + 4 * 10^2 = 6*1 + 9*10 + 4*100 = 496. Ta sama liczba 496 zapisana w systemie czternastkowym, miałaby wartość: 6 * 14^0 + 9 * 14^1 + 4 * 14^2 = 6 + 126 + 4*196 = 132 + 784 = 816 w systemie dziesiętnym. W czesze powyżej jest -1, gdyż jest to kod uzupełnieniowy U2, a taka jest jego "specyfikacja", że najstarszy bit na wartość ujemną, czyli jest przemnożony przez -1. Ot, ktoś mądry wymyślił taki sposób na zapisywanie liczb ujemnych.
Robert B. Napisano 7 Luty 2008 Autor Napisano 7 Luty 2008 Ojej dzieki To czym różni się U2 od Zwyklej liczby binarnej i jeszcze jest 2M czy jak?
streaker Napisano 7 Luty 2008 Napisano 7 Luty 2008 Może i prymitywne, ale skoro jesteśmy przy temacie, to może się przydać do sprawdzenia poprawności zamiany ;) : Zamiana z dziesiętnego na dwójkowy: #include #include void sys2 (int x); main() { char tablica[20]; int x; int i = 0; cout cin >> x; for (x; x > 0; i++) //wpisywanie wartosci do tablicy { if (x % 2 == 0) { tablica[i] = '0'; x /= 2; } else { tablica[i] = '1'; x = (x-1)/2; } } cout for (i -= 1; i>= 0; i--) cout cout system("pause"); } Z dziesiętnego na szesnastkowy: #include #include main () { int reszta, x, dziel, odejm; cout cin >> x; for (x; x>0;(odejm > 0)? x -= odejm: x/= 16 ) { reszta = x % 16; dziel = x/16; switch ((x>=16)?dziel:reszta) { case (10) : cout break; case (11) : cout break; case (12) : cout break; case (13) : cout break; case (14) : cout break; case (15) : cout case (16) : cout break; default: cout =16)?dziel:reszta); break; } odejm = dziel * 16; } cout system ("pause"); } do skompilowania w dowolnym kompilatorze c++
Robert B. Napisano 7 Luty 2008 Autor Napisano 7 Luty 2008 heh na UTK to raczej programowania nie ma :P
piotrek Napisano 7 Luty 2008 Napisano 7 Luty 2008 To czym różni się U2 od Zwyklej liczby binarnej i jeszcze jest 2M czy jak? W U2 masz właśnie najstarszy bit ujemny. Tym się różnią. Jest to jeden ze sposobów na zpisywanie liczba ujemnych. 2M? Nie wiem o co pytasz...
Robert B. Napisano 7 Luty 2008 Autor Napisano 7 Luty 2008 mozesz troszke jasniej :) I co to ten najstarszy rozumiem ostatni?
piotrek Napisano 7 Luty 2008 Napisano 7 Luty 2008 Najsatrzy czyli pierwszy z lewej. Jeśli masz liczbę ośmiobitową: 11111111 W zwykłym kodzie, jest to liczba 256: 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128. W kodzie U2, te same bity: 11111111 oznaczają 1 + 2 + 4 + 8 +16 + 32 + 64 - 128 czyli liczbę -1. Podobnie liczba 10000000 w zwykłym kodzie: 128, w U2: -128 ;) Liczba 10000001 - w zwykłym 129, w U2 -127. Generalnie te same bity mog oznaczać różne liczby, w zależności od kodu, w jakim zostają zinterpretowane. 1
FF Napisano 7 Luty 2008 Napisano 7 Luty 2008 o chłopaki... macie mózgi;D ja jak miałem programowanie na informatyce to zakuwałem programy w domu i potem pisałem;D A to co tutaj sie dzieje to juz jakiś kosmos poważniejszy jest.
Robert B. Napisano 7 Luty 2008 Autor Napisano 7 Luty 2008 Czyli U2 jest zawsze ujemną liczbą? I w przypadku 111 to 1 + 2 - 4? Ale to zawsze wyjdzie -1 Heh Hehe Freedom ja sie zastanawiam czemu sie tam pchałem ... Czemu nie grafa ale co tam jest czas jak to skoncze to pójde na grafę:)
Robert B. Napisano 7 Luty 2008 Autor Napisano 7 Luty 2008 I czmu tak??? Podobnie liczba 10000000 w zwykłym kodzie: 128, w U2: -128 Liczba 10000001 - w zwykłym 129, w U2 -127. 128 = -128 129 = -127 WHAT?
Gość mastier Napisano 7 Luty 2008 Napisano 7 Luty 2008 O, matko! Ale herezje piszecie. Znaczy to ostatnie co do cechy to prawda. Więc po kolei, opowiem na tym konkretnym przykładzie a po resztę odsyłam do świetnych materiałów przygotowanych przez mojego kolegę do nauki Arytmetyki Komputerów na pierwszym roku Informatyki, na wydziale Elektroniki na Politechnice Wrocławskiej :D *(stary, never forget !) http://mr-k.namyslow.eu.org/studia/arytmetyka.html a konkretnie to http://wk-group.net/mr-k/pliki/studia/arytmetyka/zmiennoprzecinkowe_v07.pdf więc tak 0 11001 0101010111 S E M S - znak (ang. sign) E - eksponent, wykładnik cecha (ang. exponent) M - mantysa przeliczanie wygląda następująco liczba ma postać : (-1)^S * M * 2^E ^ - znak potęgi cecha jest zapisem w U2 z obciążeniem (2^(k-1) - 1) 11001 obliczamy tak jak normalny binarny (od najmłodszej pozycji(prawej) ) czyli 1*2^0 + 0*2^1 + 0*2^2 + 1*2^3 + 1*2^4 = 25 dla 5 bitów liczba zapisaną 1ką na najstarszej pozycji (po lewej) jest 1*2^4 = 16, jeszcze odejmuje my 1, czyli 15 Zatem wykładnik E = 25-15 = 10 Dalej mantysa jest ułamkiem, należy pamiętać by dodać 1 (pomijana, dzięki czemu oszczędza się bit), więc liczba ma naprawdę postać 1,0101010111 oczywiście mówimy to o postaci znormalizowanej, postać zdenormalizowana to oddzielna bajka (odsyłam do materiałów). zatem 1*2^0 + 0*2^-1 + 1*2^-2 .... = 1 + 343/1024 zatem ostatecznie (-1)^0 * (1+ 343/1024) * 2^10 ^ czyli liczba dodatnia I niech moc JB będzie z Wami ! :cool:
Robert B. Napisano 9 Luty 2008 Autor Napisano 9 Luty 2008 No nic dziekuje wszystkim ZADANIE NIE UDAŁO MI SIE NAPISAĆ ale egzamin zaliczyłem na to minimum :)
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się