-
Data: 2012-09-20 22:30:23
Temat: Re: operacje na liczbach całkowitych a dokładność
Od: bartekltg <b...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2012-09-20 21:15, Jakub Rakus pisze:
> J.F wrote:
>
>> Tylko ze robisz mnozenie z wynikiem 32-bit, z ktorego wybierasz dalej
>> tylko starsze slowo.
>> Bo 65536*0.32=20971.52
>
> Będę marudził, ale nie chce liczb 32-bitowych :P więc to odpada.
Masz 8 bitowy procesor? To nadal mnożenie 2 16 bitowych
w 32 bitową to tylko 4 mnożenia. A przesuwanie bitowe
liczb dłuzszych niż rejestr też trochę kosztuje.
>> jesli te wspolczynniki sa tego rzedu, to mozesz rozlozyc
>> 0.32=0.0101001...b
>> a wiec x*0.32 = x>>2 + x>>4 + x>>7 ...
>
> Ale za to to rozwiązanie mi się podoba :) Przeliczenie współczynnika na
> liczbę 8 czy nawet 16-bitową i tak będzie wykonane tylko raz na jakiś czas
> podczas procedury kalibracji, a trochę przesunięć bitowych nie zeżre mi dużo
> cennego czasu i kodu programu.
W złym wypadku masz 12 tych działań.
Trochę teraz pogdybam.
Jeśli jednak masz procek 16 bitowy, możesz pomysł J.F.
nieco pożyłować.
x ma być 12 bitowe (mówiłeś, że maks to 2^13. Zakładam,
że ograniczenie się do 2^13-1 nie jest problemem)
Mamy więc całe 3 bity, możemy mnożyć przez 111_b i będzie ok.
(x*a_1)>>3 + (x*a_2)>>6 + (x*a_3)>>9 + (x*a_4)>>12 + (x*a_5)>>15
gdzie a_i to kolejne trójki bitów Twojego mnożnika.
Jeśli mnożnik jest w okolicach 0.3, dokładniej jest <0.5
to od razu
(x*a_1)>>4 + (x*a_2)>>7 + (x*a_3)>>10 + (x*a_4)>>13 + (x*a_5)>>16
Czyli samo
(x*a_1)>>4 + (x*a_2)>>7 + (x*a_3)>>10 + (x*a_4)>>13
bo (x*a_5) jest 16 bitowe, więc przesunięcie go zjada.
pzdr
bartekltg
Następne wpisy z tego wątku
- 21.09.12 20:56 Marek Wodzinski
Najnowsze wątki z tej grupy
- Czy cos fi przechodzi przez trafo separujące?
- śrubka masy
- Ciekawostka na dziś lock bity
- [OT] napisy w YT
- Było 83V
- Stare komputery
- Odbiornik ADS-B i wzmacniacze
- Thunderbird i dysk...
- opornosc falowa
- Bateria 9V 6F22, alkaliczna v cynkowa, samorozładowanie, bateria wysokiej trwałości do miernika
- Tani zakup z ali?
- w czasach LED komary mają ciężko
- walizka z kodami
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
Najnowsze wątki
- 2025-08-06 Gdynia => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-08-06 Białystok => Inżynier oprogramowania .Net <=
- 2025-08-06 "[...] sejmowe wystąpienie posłanki Klaudii Jachiry, która zakończyła je słowami ,,Sława Ukrainie"."
- 2025-08-05 "Chiny przekraczają w wydobyciu 4 mld ton węgla, Indie i USA ponad 1 mld, a Rosja 500 mln ton [...]"
- 2025-08-05 Panuje się 181 159,42 zł./mies. na posła w 2026r.
- 2025-08-05 "Chiny przekraczają w wydobyciu 4 mld ton węgla, Indie i USA ponad 1 mld, a Rosja 500 mln ton [...]"
- 2025-08-05 Czy cos fi przechodzi przez trafo separujące?
- 2025-08-05 kajaki i promile
- 2025-08-05 Re: Tesla jest bezpieczna, wczoraj spaliła się doszczętnie na Ursynowie i nikomu się nic nie stało
- 2025-08-05 Gdynia => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-08-05 Re: Atak na lekarza w Oławie. Policja zatrzymała sprawcę na lotnisku Polska Agencja Prasowa 4 sierpnia 2025, 12:16 FACEBOOK X E-MAIL KOPIUJ LINK W szpitalu w Oławie 37-letni pacjent zaatakował lekarza, po tym, jak ten odmówił mu wypisania długoterminowego
- 2025-08-05 B2B i książka przychodów i rozchodów
- 2025-08-04 Re: Atak na lekarza w Oławie. Policja zatrzymała sprawcę na lotnisku Polska Agencja Prasowa 4 sierpnia 2025, 12:16 FACEBOOK X E-MAIL KOPIUJ LINK W szpitalu w Oławie 37-letni pacjent zaatakował lekarza, po tym, jak ten odmówił mu wypisania długoterminowego
- 2025-08-04 Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- 2025-08-04 Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML