szybkie dzielenie przez 100 i zamiana do bcd :-)
Masz problem? Zapytaj na forum elektroda.pl
From: wontor <wontor_at_nospam_interia.pl>
Subject: szybkie dzielenie przez 100 i zamiana do bcd :-)
Date: Tue, 04 Apr 2006 07:49:52 +0200
Potrzebuje bardzo szybko podzielic liczbe dwubajtowa przez 100 i pozniej
zamienic ja do BCD
Prosze o jakas ogolna metode
From: Grzegorz Kurczyk <grzegorz.usun.to_at_nospam_control.slupsk.pl>
Subject: Re: szybkie dzielenie przez 100 i zamiana do bcd :-)
Date: Tue, 04 Apr 2006 08:09:37 +0200
UĹźytkownik wontor napisaĹ:
Potrzebuje bardzo szybko podzielic liczbe dwubajtowa przez 100 i pozniej
zamienic ja do BCD
Prosze o jakas ogolna metode
Podpowiem
100 = 64 + 32 + 4
Przeanalizuj typowy algorytm dzielenia liczby 16-to bitowej przez 8-mio
bitowÄ
i wykonaj tylko te trzy niezbÄdne odejmowania (choÄ chyba nie
bÄdzie to dziaĹaÄ jakoĹÄ strasznie szybciej)
Pozdrawiam
Grzegorz
From: "szlovak" <adamkxBEZx_at_nospam_o2.pl>
Subject: Re: szybkie dzielenie przez 100 i zamiana do bcd :-)
Date: Wed, 5 Apr 2006 08:06:29 +0000 (UTC)
Grzegorz Kurczyk wrote:
Użytkownik wontor napisał:
Potrzebuje bardzo szybko podzielic liczbe dwubajtowa przez 100 i pozniej zamienic ja do BCD
Prosze o jakas ogolna metode
Podpowiem
100 = 64 + 32 + 4
Przeanalizuj typowy algorytm dzielenia liczby 16-to bitowej przez 8-mio bitową i wykonaj tylko te trzy niezbędne odejmowania (choć chyba nie będzie to działać jakość strasznie szybciej)
Pozdrawi
rozwiń temat proszę bo niby po co chcesz rozbić dzielnik? niby jak to ma działać, jak będziesz miał wartość z dzielenia przez 64,32 i 4? I co chcesz później odjąć i od czego? :-)
Date: Tue, 04 Apr 2006 17:09:26 +1000
From: Tom <ttp_at_nospam_nospam.com>
Subject: Re: szybkie dzielenie przez 100 i zamiana do bcd :-)
wontor wrote:
Potrzebuje bardzo szybko podzielic liczbe dwubajtowa przez 100 i pozniej
zamienic ja do BCD
Prosze o jakas ogolna metode
Moze pomysl czy nie byloby latwiej najpierw zamienic do BCD a potem
dzielic przez 100
Tomek
From: "Greg" <Grzegorz.Kasprowicz_at_nospam_CERN.CH>
Subject: Re: szybkie dzielenie przez 100 i zamiana do bcd :-)
Date: Tue, 4 Apr 2006 11:10:19 +0200
-- >> Potrzebuje bardzo szybko podzielic liczbe dwubajtowa przez 100 i
pozniej
zamienic ja do BCD
Prosze o jakas ogolna metode
Moze pomysl czy nie byloby latwiej najpierw zamienic do BCD a potem
dzielic przez 100
ale zeby zamienic wraz musi dzialic przez 100:)
From: "Pawel \"O'Pajak\"" <opajak_at_nospam_gazeta.pl>
Subject: Re: szybkie dzielenie przez 100 i zamiana do bcd :-)
Date: Tue, 04 Apr 2006 11:26:14 +0200
Powitanko,
ale zeby zamienic wraz musi dzialic przez 100:)
Nie musi, mozna bez dzielenia i mnozenia.
Pozdroofka,
Pawel Chorzempa
--
"-Tato, po czym poznać małą szkodliwość społeczną?
-Po wielkiej szkodzie prywatnej" (kopyrajt: S. Mrożek)
******* >>> !!! UWAGA: ODPOWIADAM TYLKO NA MAILE ->:
> pavel(ten_smieszny_znaczek)klub.chip.pl <<<<*******
From: "Bogdan Gutknecht" <b_gutknecht_at_nospam_interia.pl>
Subject: Re: szybkie dzielenie przez 100 i zamiana do bcd :-)
Date: Tue, 4 Apr 2006 11:45:14 +0200
Użytkownik "Greg" <Grzegorz.Kasprowicz_at_nospam_CERN.CH> napisał w wiadomości
news:e0td5t$8uv$1_at_nospam_inews.gazeta.pl...
-- >> Potrzebuje bardzo szybko podzielic liczbe dwubajtowa przez 100 i
pozniej
zamienic ja do BCD
Prosze o jakas ogolna metode
Moze pomysl czy nie byloby latwiej najpierw zamienic do BCD a potem
dzielic przez 100
ale zeby zamienic wraz musi dzialic przez 100:)
Nie musi - patrz mój post niżej.
From: "Bogdan Gutknecht" <b_gutknecht_at_nospam_interia.pl>
Subject: Re: szybkie dzielenie przez 100 i zamiana do bcd :-)
Date: Tue, 4 Apr 2006 09:25:26 +0200
Uzytkownik "wontor" <wontor_at_nospam_interia.pl> napisal w wiadomosci
news:e0t1ha$r8p$1_at_nospam_nemesis.news.tpi.pl...
Potrzebuje bardzo szybko podzielic liczbe dwubajtowa przez 100 i pozniej
zamienic ja do BCD
Prosze o jakas ogolna metode
Sadze, ze najszybsza bylaby zamiana na BCD bez wstepnego dzielenia przez 100
i wykorzystanie pierwszych trzech cyfr.
Aby bylo jak najszybciej nalezy zrealizowac taki mniej wiecej algorytm:
Porównujemy z 40000,
jesli mniejsze to mamy najstarszy bit wyniku=0;
jesli nie to najstarszy bit wyniku=1, odejmujemy 40000.
Porównujemu z 20000,
jesli mniejsze to mamy kolejny bit wyniku=0;
jesli nie to kolejny bit wyniku=1, odejmujemy 20000
itd.
Mozna zapetlic, ale najszybciej chyba dziala rozwiniety.
From: "Dziadek" <a_at_nospam_b.c>
Subject: Re: szybkie dzielenie przez 100 i zamiana do bcd :-)
Date: Tue, 4 Apr 2006 09:25:56 +0200
Najszybciej to tablica...
Dz.
"wontor" <wontor_at_nospam_interia.pl> wrote in message
news:e0t1ha$r8p$1_at_nospam_nemesis.news.tpi.pl...
Potrzebuje bardzo szybko podzielic liczbe dwubajtowa przez 100 i pozniej
zamienic ja do BCD
Prosze o jakas ogolna metode
From: "Bogdan Gutknecht" <b_gutknecht_at_nospam_interia.pl>
Subject: Re: szybkie dzielenie przez 100 i zamiana do bcd :-)
Date: Tue, 4 Apr 2006 13:25:21 +0200
Użytkownik "Dziadek" <a_at_nospam_b.c> napisał w wiadomości
news:e0t72o$86u$1_at_nospam_atlantis.news.tpi.pl...
Najszybciej to tablica...
Jedna tablica adresowana starszym bajtem (256 elementów) zawierajšca wynik,
druga tej samej wielkości zawierajšca resztę. Resztę dodajemy do drugiego
bajtu i adresujemy trzeciš tablicę zawierajšcš młodszy bajt wyniku. Niestety
musi być odpowiednio większa.
Niemniej zaledwie 1kB tablic i można zrealizować bardzo szybkie dzielenie.
From: "szlovak" <adamkxBEZx_at_nospam_o2.pl>
Subject: Re: szybkie dzielenie przez 100 i zamiana do bcd :-)
Date: Wed, 5 Apr 2006 08:21:37 +0000 (UTC)
wontor wrote:
Potrzebuje bardzo szybko podzielic liczbe dwubajtowa przez 100 i pozniej zamienic ja do BCD
Prosze o jakas ogolna metode
Jeśli ma być najszybsze to tablica dokładnie 3x256x256 bajtów przy założeniu że odrzucasz wartość po przecinku.
To bardzo duża tablica :-) Ale szybciej się nie da :-)
W sumie wyników będzie dokładnie 656 czyli w kodzie bcd 3 bajty każdy wynik. Więc można zrobić tablicę 3x656 bajtów z wynikiem BCD ale też trzeba jakoś wybrać ten wynik czyli podzielić przez 100.
Więc podzieliłbym przez 100 , i wybieram wartość z tablicy 3x656 bajtów. Albo dajesz procka ze sprzętowym dzieleniem i masz parę cykli i gotowe
--
From: "szlovak" <adamkxBEZx_at_nospam_o2.pl>
Subject: Re: szybkie dzielenie przez 100 i zamiana do bcd :-)
Date: Wed, 5 Apr 2006 08:45:19 +0000 (UTC)
sprzętowo będą trzy dzielenia, przez 100 (1bajt czyli najmłodszy wyniku to końcówka w 4 ostatnich bitach), wynik przez 100 (najstarszy bajt 3 wyniku) i jeszcze raz wynik przez 10 (2bajt wyniku). Więc sprzętowo wyjdzie bardzo szybko też ..
--
From: "szlovak" <adamkxBEZx_at_nospam_o2.pl>
Subject: Re: szybkie dzielenie przez 100 i zamiana do bcd :-)
Date: Wed, 5 Apr 2006 08:51:09 +0000 (UTC)
mozna jeszcze skrócić tablicę umieszczając wynik nie w 3 ale w 2 bajtach więc 656x2
--
From: "[g.d.]" <g_d.WYTNIJ_at_nospam_gazeta.pl>
Subject: Re: szybkie dzielenie przez 100 i zamiana do bcd :-)
Date: Wed, 5 Apr 2006 11:45:39 +0000 (UTC)
wontor <wontor_at_nospam_interia.pl> napisał(a):
Potrzebuje bardzo szybko podzielic liczbe dwubajtowa przez 100 i pozniej
zamienic ja do BCD
Prosze o jakas ogolna metode
Bardzo szybko to pamieci LUT w strukturze FPGA, zrealizujesz dowolna funkcje.
Przy 16tu wejsciach zajmie to 5 pamieci 4 wejsciowych, 8 pamieci 3 wejsciowych
czy 15 pamieci dwuwejsciowych na jeden bit wartosci wynikowej.
Przy pamieciach 4 wejciowych calosc nie potrwa dluzej niz 3-4 ns (w nowszych
kosciach). Szybciej to bedzie ciezko.
Jak sie boisz FPGA to mozesz pojsc w PAL/GAL lub CPLD. Wtedy mozesz
potrzebowac wiecej kostek.
Moze zdefinuj dokladniej problem bo jak widzisz istnieje wiele interpretacji.
--
pozdro.
[g.d.]
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
From: "Roman" <romantek_at_nospam_poczta.onet.pl>
Subject: Re: szybkie dzielenie przez 100 i zamiana do bcd :-)
Date: Wed, 5 Apr 2006 16:22:05 +0200
"wontor" <wontor_at_nospam_interia.pl> wrote in message
news:e0t1ha$r8p$1_at_nospam_nemesis.news.tpi.pl...
Potrzebuje bardzo szybko podzielic liczbe dwubajtowa przez 100 i pozniej
zamienic ja do BCD
Prosze o jakas ogolna metode
Widzialem pewien algorytm rekurencyjny zamiany binarnej->BCD mozna by go tu
zastosowac i potem odrzucic dwie najmlodsze pozycje (zamiast dzielic przez
sto na poczatku).
Jak znajde te ksiazke - dam info.
Roman
From: Andrzej Popowski <popej_at_nospam_friko.onet.pl>
Subject: Re: szybkie dzielenie przez 100 i zamiana do bcd :-)
Date: Wed, 05 Apr 2006 18:51:45 +0200
Tue, 04 Apr 2006 07:49:52 +0200, wontor <wontor_at_nospam_interia.pl> pisze:
Potrzebuje bardzo szybko podzielic liczbe dwubajtowa przez 100 i pozniej
Dzielenie prezez 100 bez uwzględniania reszty możesz wykonać samymi
przesunięciami, np.:
wynik = (x/64 + x/256 + x/2048)/2
Możesz to optymalizowac zależnie od procesora, np. x/256 to po prostu
starszy bajt.
zamienic ja do BCD
tablica dla 655 wartości?
Prosze o jakas ogolna metode
--
Pozdrowienia
Andrzej Popowski