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-21 20:56:38
    Temat: Re: operacje na liczbach całkowitych a dokładność
    Od: Marek Wodzinski <m...@O...mamy.to> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 09/19/2012 07:25 PM, Jakub Rakus wrote:
    > 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.

    Jak nie zmiennoprzecinkowe, to może stałoprzecinkowe?
    O ile dobrze zrozumiałem z innych postów, to kalibracja może być złożona
    obliczeniowo, natomiast aplikowanie współczynnika ma być szybkie, proste
    i dokładne.
    Ja bym to zrobił tak: dany współczynnik (zakładając, że jest mniejszy od
    1) zapisał jako liczbę stałoprzecinkową np. 0.16 (tzn 0 bitów liczby
    całkowitej i 16 bitów po przecinku) lub jak nie jest potrzebna aż taka
    dokładność, to 0.8. Potem w zasadzie tylko mnożysz daną przez ten
    współczynnik (mnożenie 16bitx16bit lub 16bitx8bit), wywalasz wszystko
    'po przecinku' do kosza (czyli bierzesz za wynik 2 najstarsze bajty) i
    tyle. Jeżeli masz w procku hardwarowe mnożenie, to będzie bardzo szybko.
    Natomiast przy kalibracji możesz się trochę pogimnastykować, żeby
    wyliczyć ten współczynnik (też na stałoprzecinkowych, pamiętając o
    zakresach liczb).

    > 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.

    Podstawowym błędem w rozumowaniu jest przyjęcie, że współczynnik
    bedziesz trzymał w postaci dziesiętnej.



    Pozdrawiam

    Marek
    --
    "If you want something done...do yourself!"
    Jean-Baptiste Emmanuel Zorg

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

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: