-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!news.e-wro.pl!not-for-mail
From: Marek Wodzinski <m...@O...mamy.to>
Newsgroups: pl.misc.elektronika
Subject: Re: operacje na liczbach całkowitych a dokładność
Date: Fri, 21 Sep 2012 20:56:38 +0200
Organization: Miejskie Sieci Informatyczne e-wro
Lines: 43
Message-ID: <k3id8m$ggg$1@atena.e-wro.net>
References: <k3cv72$2hn$1@node1.news.atman.pl>
NNTP-Posting-Host: h82-143-151-130-static.e-wro.net.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: atena.e-wro.net 1348253782 16912 82.143.151.130 (21 Sep 2012 18:56:22 GMT)
X-Complaints-To: a...@e...pl
NNTP-Posting-Date: Fri, 21 Sep 2012 18:56:22 +0000 (UTC)
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:11.0) Gecko/20120314 Thunderbird/11.0
In-Reply-To: <k3cv72$2hn$1@node1.news.atman.pl>
Xref: news-archive.icm.edu.pl pl.misc.elektronika:635817
[ ukryj 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
- pradnica krokowa
- Nieustający podziw...
- Coś dusi.
- akumulator napięcie 12.0v
- Podłączenie DMA 8257 do 8085
- pozew za naprawę sprzętu na youtube
- gasik
- Zbieranie danych przez www
- reverse engineering i dodawanie elementów do istniejących zamkniętych produktów- legalne?
- Problem z odczytem karty CF
- 74F vs 74HCT
- Newag ciąg dalszy
- Digikey, SN74CBT3253CD, FST3253, ktoś ma?
- Szukam: czujnik ruchu z możliwością zaączenia na stałe
- kabelek - kynar ?
Najnowsze wątki
- 2025-01-17 pradnica krokowa
- 2025-01-17 Warszawa => International Freight Forwarder <=
- 2025-01-17 Warszawa => Helpdesk Specialist <=
- 2025-01-17 Kraków => User Experience Designer <=
- 2025-01-17 Nieustający podziw...
- 2025-01-17 zawsze parkuj tyłem do ulicy
- 2025-01-16 nie będzie naprawy pod blokiem?
- 2025-01-16 korytarz zycia
- 2025-01-16 Katowice => Key Account Manager (ERP) <=
- 2025-01-16 Środa Wielkopolska => Specjalista ds. public relations <=
- 2025-01-16 Poznań => Konsultant Wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-01-16 Gdańsk => Full Stack web developer (obszar .Net Core, Angular6+) <=
- 2025-01-16 Re: Bodnatura BARDZO tanio wyceniła Owsiaka. HAŃBA!
- 2025-01-16 Warszawa => Software .Net Developer <=
- 2025-01-15 Gdańsk => System Architect (Java background) <=