-
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
Najnowsze wątki z tej grupy
- Taki tam szkolny problem...
- LIR2032 a ML2032
- SmartWatch Multimetr bezprzewodowy
- olej psuje?
- Internet w lesie - Starlink
- Opis produktu z Aliexpress
- No proszę, a śmialiście się z hindusów.
- Zewnętrzne napięcie referencyjne LM385 1,2V -> 100mV dla ICL7106, Metex M-3800
- karta parkingowa
- Wl/Wyl (On/Off) bialy/niebieski
- I3C
- Pytanie o transformator do dzwonka
- międzymordzie USB 3.2 jako 2.0
- elektronicy powinni pomysleć o karierze elektryka
- jak szybko plynie prad
Najnowsze wątki
- 2024-11-21 Re: Dla mr. J.F`a, Trybuna i Wiesiaczka którzy "troszczą" się o państwowe i u których 0 pragmatyzmu
- 2024-11-21 Re: Dla mr. J.F`a, Trybuna i Wiesiaczka którzy "troszczą" się o państwowe i u których 0 pragmatyzmu
- 2024-11-21 Re: Dla mr. J.F`a, Trybuna i Wiesiaczka którzy "troszczą" się o państwowe i u których 0 pragmatyzmu
- 2024-11-20 "betamaxy" i inne voip-y dzisiaj
- 2024-11-21 Strach się bać
- 2024-11-21 Koniec smrodów
- 2024-11-20 Krematorium
- 2024-11-20 Taki tam szkolny problem...
- 2024-11-20 LIR2032 a ML2032
- 2024-11-20 SmartWatch Multimetr bezprzewodowy
- 2024-11-21 Środa Wielkopolska => Konsultant SAP <=
- 2024-11-21 Łódź => Spedytor Międzynarodowy <=
- 2024-11-21 Wrocław => Inżynier bezpieczeństwa aplikacji <=
- 2024-11-21 Kraków => Lead Java EE Developer <=
- 2024-11-21 Karlino => Konsultant wewnętrzny SAP (FI/CO) <=