eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaoperacje na liczbach całkowitych a dokładnośćRe: operacje na liczbach całkowitych a dokładność
  • Data: 2012-09-20 11:57:28
    Temat: Re: operacje na liczbach całkowitych a dokładność
    Od: Mario <m...@...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 2012-09-20 09:49, Waldemar Krzok pisze:
    > Am 19.09.2012 22:32, schrieb Mario:
    >> W dniu 2012-09-19 19:25, Jakub Rakus pisze:
    >>> Witam,
    >>>
    >>> Trochę już minęło czasu od zajęć z metod numerycznych... więc jak
    >>> najlepiej
    >>> wykonać taką operację:
    >>>
    >>> Mam liczbę całkowitą która maksymalnie osiąga wartość 2^13, ale muszę ją
    >>> pomnożyć przez niecałkowity współczynnik, który będzie wynosił około
    >>> 0,3.
    >>> Zmienne wykorzystywane w obliczeniach są 16 bitowe (nie mam tyle mocy
    >>> obliczeniowej żeby przejść na liczby zmiennoprzecinkowe). Ponieważ 0,3
    >>> to to
    >>> samo co 3/10, to mogę sobie rozbić moje działanie na mnożenie przez 3 i
    >>> dzielenie bez reszty przez 10.
    >>>
    >>> Pytanie - jaka kolejność zapewnia większą dokładność? Najpierw mnożyć
    >>> czy
    >>> lepiej najpierw dzielić? Co w przypadku gdy mój współczynnik wyniesie
    >>> np.
    >>> 0,32 - wykonanie jako pierwszego mnożenia przez 32 (a potem dzielenia
    >>> przez
    >>> 100) da mi pośredni wynik większy niż zakres mojej 16-bitowej zmiennej.
    >>>
    >>
    >> Nie napisałeś w jakim języku chcesz pisać. Jeśli w c to użyj double.
    >> Jeśli w asm to musisz na potrzeby tego mnożenia napisać własną
    >> procedurkę mnożenia dwóch 16 bitowych z wynikiem na np 24 czy 32 bitach.
    >> Kolejność działań to oczywiście najpierw mnożenie potem dzielenie.
    >>
    >
    > Przecież pisze wyraźnie, że nie ma mocy obliczeniowej na floaty, a ty mu
    > z double wyskakujesz.

    Sorki miało być long.


    > Osobiście robię takie rzeczy tak, by jak najmniej stracić i szybko
    > liczyć. Czyli ułamek wyrazić jako ułamek dwójkowy, czyli na przykład
    > twoje 0.32 jako 41/128. Następnie mnożę dwie liczby 16to bitowe z
    > wynikiem 32 bity

    Zdaje się, że pytający właśnie nie wie jak zrobić żeby mieć wynik 32
    bitowy.



    --
    pozdrawiam
    MD

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: