Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.programming > #27281 > unrolled thread
| Started by | szemrany <szemrany@offline.off> |
|---|---|
| First post | 2015-08-31 21:58 +0200 |
| Last post | 2015-09-07 09:46 +0200 |
| Articles | 20 on this page of 27 — 9 participants |
Back to article view | Back to pl.comp.programming
Szybkie szukanie ustawionego bitu szemrany <szemrany@offline.off> - 2015-08-31 21:58 +0200
Re: Szybkie szukanie ustawionego bitu Tomek Kańka <tom@tomkan.eu.org> - 2015-08-31 20:39 +0000
Re: Szybkie szukanie ustawionego bitu szemrany <szemrany@offline.off> - 2015-08-31 22:49 +0200
Re: Szybkie szukanie ustawionego bitu Tomek Kańka <tom@tomkan.eu.org> - 2015-08-31 21:21 +0000
Re: Szybkie szukanie ustawionego bitu szemrany <szemrany@offline.off> - 2015-08-31 23:37 +0200
Re: Szybkie szukanie ustawionego bitu bartekltg <bartekltg@gmail.com> - 2015-08-31 14:40 -0700
Re: Szybkie szukanie ustawionego bitu "AK" <nobody@nowhere.com> - 2015-08-31 23:07 +0200
Re: Szybkie szukanie ustawionego bitu szemrany <szemrany@offline.off> - 2015-08-31 23:34 +0200
Re: Szybkie szukanie ustawionego bitu "AK" <nobody@nowhere.com> - 2015-09-01 13:01 +0200
Re: Szybkie szukanie ustawionego bitu voy <v_o_yNOSP@Mgazeta.pl> - 2015-09-01 08:03 +0200
Re: Szybkie szukanie ustawionego bitu szemrany <szemrany@offline.off> - 2015-09-01 10:31 +0200
Re: Szybkie szukanie ustawionego bitu godek.maciek@gmail.com - 2015-09-01 01:45 -0700
Re: Szybkie szukanie ustawionego bitu "M.M." <mmarszik@gmail.com> - 2015-09-01 02:57 -0700
Re: Szybkie szukanie ustawionego bitu szemrany <szemrany@offline.off> - 2015-09-01 12:23 +0200
Re: Szybkie szukanie ustawionego bitu "Radoslaw Szwed" <radekszwed@pochta.fm> - 2015-09-01 12:30 +0200
Re: Szybkie szukanie ustawionego bitu szemrany <szemrany@offline.off> - 2015-09-01 13:04 +0200
Re: Szybkie szukanie ustawionego bitu bartekltg <bartekltg@gmail.com> - 2015-09-01 13:37 +0200
Re: Szybkie szukanie ustawionego bitu szemrany <szemrany@offline.off> - 2015-09-01 14:29 +0200
Re: Szybkie szukanie ustawionego bitu bartekltg <bartekltg@gmail.com> - 2015-09-01 16:10 +0200
Re: Szybkie szukanie ustawionego bitu szemrany <szemrany@offline.off> - 2015-09-01 17:28 +0200
Re: Szybkie szukanie ustawionego bitu szemrany <szemrany@offline.off> - 2015-09-01 14:40 +0200
Re: Szybkie szukanie ustawionego bitu szemrany <szemrany@offline.off> - 2015-09-01 22:20 +0200
Re: Szybkie szukanie ustawionego bitu Wojciech Muła <wojtek.mula@gmail.com> - 2015-09-04 00:14 -0700
Re: Szybkie szukanie ustawionego bitu szemrany <szemrany@offline.off> - 2015-09-04 09:53 +0200
Re: Szybkie szukanie ustawionego bitu Wojciech Muła <wojtek.mula@gmail.com> - 2015-09-04 08:01 -0700
Re: Szybkie szukanie ustawionego bitu szemrany <szemrany@offline.off> - 2015-09-04 20:20 +0200
Re: Szybkie szukanie ustawionego bitu "Radoslaw Szwed" <radekszwed@pochta.fm> - 2015-09-07 09:46 +0200
Page 1 of 2 [1] 2 Next page →
| From | szemrany <szemrany@offline.off> |
|---|---|
| Date | 2015-08-31 21:58 +0200 |
| Subject | Szybkie szukanie ustawionego bitu |
| Message-ID | <1i3y3j1aqrgzm.oc3pbikd1n92.dlg@40tude.net> |
Hejka, Mam liczbę 64 bit, traktuję ją jako tablicę bitów, zazwyczaj są w niej ustawione jakieś bity, ale czasem nie. Jak najszybciej znaleźć indeks ustawionego bitu? Wiem jak szybko sprawdzić czy zapalone są wszystkie lub żaden, ale jak odkryć, że "pali" się np. czterdziesty ósmy? Najprostsza jest pętla z przesuwaniem bitowym i testem skrajnego bitu, ale w najgorszym razie trzeba przeiterować 63 razy. Może da się szybciej? Może jakieś operacje arytmetyczne? -- howgh szemrany "Trzeba z żywymi naprzód iść, po życie sięgać nowe, a nie w uwiędłych laurów liść z uporem stroić głowę"
[toc] | [next] | [standalone]
| From | Tomek Kańka <tom@tomkan.eu.org> |
|---|---|
| Date | 2015-08-31 20:39 +0000 |
| Message-ID | <slrnmu9erv.tsq.tom@tv2.dom.local> |
| In reply to | #27281 |
szemrany <szemrany@offline.off> napisał(a) > Hejka, > > Mam liczbę 64 bit, traktuję ją jako tablicę bitów, zazwyczaj są w niej > ustawione jakieś bity, ale czasem nie. > Jak najszybciej znaleźć indeks ustawionego bitu? > Wiem jak szybko sprawdzić czy zapalone są wszystkie lub żaden, ale jak > odkryć, że "pali" się np. czterdziesty ósmy? > Najprostsza jest pętla z przesuwaniem bitowym i testem skrajnego bitu, ale > w najgorszym razie trzeba przeiterować 63 razy. > Może da się szybciej? A to nie jest "premature optymzation":)? > Może jakieś operacje arytmetyczne? Jeśłi to tylko jeden bit, to szukaj binarnie. -- Tomek
[toc] | [prev] | [next] | [standalone]
| From | szemrany <szemrany@offline.off> |
|---|---|
| Date | 2015-08-31 22:49 +0200 |
| Message-ID | <v13fst2yrtuh$.1su3vdc690vq2.dlg@40tude.net> |
| In reply to | #27282 |
On Mon, 31 Aug 2015 20:39:28 +0000 (UTC), Tomek Kańka wrote: >> Mam liczbę 64 bit, traktuję ją jako tablicę bitów, zazwyczaj są w niej >> ustawione jakieś bity, ale czasem nie. >> Jak najszybciej znaleźć indeks ustawionego bitu? >> Wiem jak szybko sprawdzić czy zapalone są wszystkie lub żaden, ale jak >> odkryć, że "pali" się np. czterdziesty ósmy? >> Najprostsza jest pętla z przesuwaniem bitowym i testem skrajnego bitu, ale >> w najgorszym razie trzeba przeiterować 63 razy. >> Może da się szybciej? > > A to nie jest "premature optymzation":)? Raczej nie, to część struktury używanej wielowątkowo i często. >> Może jakieś operacje arytmetyczne? > > Jeśłi to tylko jeden bit, to szukaj binarnie. Algorytm wyszukiwania binarnego wymaga chyba większego zróżnicowania elementów w tablicy niż tylko 0 i 1. Ale może masz co innego na myśli? -- howgh szemrany "Trzeba z żywymi naprzód iść, po życie sięgać nowe, a nie w uwiędłych laurów liść z uporem stroić głowę"
[toc] | [prev] | [next] | [standalone]
| From | Tomek Kańka <tom@tomkan.eu.org> |
|---|---|
| Date | 2015-08-31 21:21 +0000 |
| Message-ID | <slrnmu9hae.u05.tom@tv2.dom.local> |
| In reply to | #27283 |
szemrany <szemrany@offline.off> napisał(a) > On Mon, 31 Aug 2015 20:39:28 +0000 (UTC), Tomek Kańka wrote: > >>> Mam liczbę 64 bit, traktuję ją jako tablicę bitów, zazwyczaj są w niej >>> ustawione jakieś bity, ale czasem nie. >>> Jak najszybciej znaleźć indeks ustawionego bitu? >>> Wiem jak szybko sprawdzić czy zapalone są wszystkie lub żaden, ale jak >>> odkryć, że "pali" się np. czterdziesty ósmy? >>> Najprostsza jest pętla z przesuwaniem bitowym i testem skrajnego bitu, ale >>> w najgorszym razie trzeba przeiterować 63 razy. >>> Może da się szybciej? >> >> A to nie jest "premature optymzation":)? > > Raczej nie, to część struktury używanej wielowątkowo i często. > >>> Może jakieś operacje arytmetyczne? >> >> Jeśłi to tylko jeden bit, to szukaj binarnie. > > Algorytm wyszukiwania binarnego wymaga chyba większego zróżnicowania > elementów w tablicy niż tylko 0 i 1. Jeśli zapalony jest tylko 1 bit, to wyszukujemy binarnie (w sensie dzielenia przedziału na połówki). zaczynamy od 2^32 i sprawdzamy, czy liczba jest wieksza/mniejsza. Na tej podstawie zawężamy przedział. Zapalony bit znajdziemy w 6 krokach. -- Tomek
[toc] | [prev] | [next] | [standalone]
| From | szemrany <szemrany@offline.off> |
|---|---|
| Date | 2015-08-31 23:37 +0200 |
| Message-ID | <sjvjn3t29w2z.6ntniskweqjy$.dlg@40tude.net> |
| In reply to | #27285 |
On Mon, 31 Aug 2015 21:21:18 +0000 (UTC), Tomek Kańka wrote: >> Algorytm wyszukiwania binarnego wymaga chyba większego zróżnicowania >> elementów w tablicy niż tylko 0 i 1. > > Jeśli zapalony jest tylko 1 bit, to wyszukujemy binarnie (w sensie > dzielenia przedziału na połówki). zaczynamy od 2^32 i sprawdzamy, czy > liczba jest wieksza/mniejsza. Na tej podstawie > zawężamy przedział. Zapalony bit znajdziemy w 6 krokach. No właśnie nie jest tylko jeden, lecz zazwyczaj więcej. Ta liczba 64 bitowa to tablica bitów/flag i chce znaleźć pierwszy, dowolny ustawiony bit. -- howgh szemrany "Trzeba z żywymi naprzód iść, po życie sięgać nowe, a nie w uwiędłych laurów liść z uporem stroić głowę"
[toc] | [prev] | [next] | [standalone]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2015-08-31 14:40 -0700 |
| Message-ID | <d924e3e9-4d9c-42af-859c-2025b7dffa9c@googlegroups.com> |
| In reply to | #27283 |
W dniu poniedziałek, 31 sierpnia 2015 22:49:24 UTC+2 użytkownik szemrany napisał: > On Mon, 31 Aug 2015 20:39:28 +0000 (UTC), Tomek Kańka wrote: > > >> Mam liczbę 64 bit, traktuję ją jako tablicę bitów, zazwyczaj są w niej > >> ustawione jakieś bity, ale czasem nie. > >> Jak najszybciej znaleźć indeks ustawionego bitu? > >> Wiem jak szybko sprawdzić czy zapalone są wszystkie lub żaden, ale jak > >> odkryć, że "pali" się np. czterdziesty ósmy? > >> Najprostsza jest pętla z przesuwaniem bitowym i testem skrajnego bitu, ale > >> w najgorszym razie trzeba przeiterować 63 razy. > >> Może da się szybciej? > > > > A to nie jest "premature optymzation":)? > > Raczej nie, to część struktury używanej wielowątkowo i często. > > >> Może jakieś operacje arytmetyczne? > > > > Jeśłi to tylko jeden bit, to szukaj binarnie. > > Algorytm wyszukiwania binarnego wymaga chyba większego zróżnicowania > elementów w tablicy niż tylko 0 i 1. A to czemu? Wyszukiwani binarne oznacza tu tyle, że sprawdzasz na raz połowę bitów. Tu masz przykład takiego wyszukiwania https://graphics.stanford.edu/~seander/bithacks.html#IntegerLog wyszukuje pierwszy zapalony bit. Obok jest parę innych. Masz też wbudowaną funckję __builtin_clz (w innym kompilatorze będzie się nazywałą inaczej). Jeśli zapalony jest tylko jeden bit, możesz odjać jedynkę i policzyć bity, lub... wziąć modulo 37 (tylko dla 32 bitowych) lub 67. <matma> grupa multiplikatywna liczb modulo 37 i 67 jest generowana przez 2<matma> wiąc 2^n % 67 będą różnymi małymi liczbami. Teraz potrzebna tylko mała tablica odszyfrowująca;-) pzdr bartekltg
[toc] | [prev] | [next] | [standalone]
| From | "AK" <nobody@nowhere.com> |
|---|---|
| Date | 2015-08-31 23:07 +0200 |
| Message-ID | <ms2fmb$r4u$1@node2.news.atman.pl> |
| In reply to | #27282 |
Użytkownik "Tomek Kańka" <tom@tomkan.eu.org> napisał: >> Wiem jak szybko sprawdzić czy zapalone są wszystkie lub żaden, ale jak >> odkryć, że "pali" się np. czterdziesty ósmy? x & (1 << (48 - 1)) AK --- Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe Avast. https://www.avast.com/antivirus
[toc] | [prev] | [next] | [standalone]
| From | szemrany <szemrany@offline.off> |
|---|---|
| Date | 2015-08-31 23:34 +0200 |
| Message-ID | <1ua857mf6vgbp.7obbol0iktdo.dlg@40tude.net> |
| In reply to | #27284 |
On Mon, 31 Aug 2015 23:07:22 +0200, AK wrote: >>> Wiem jak szybko sprawdzić czy zapalone są wszystkie lub żaden, ale jak >>> odkryć, że "pali" się np. czterdziesty ósmy? > > x & (1 << (48 - 1)) Hmm... tak, tylko, że ja pytam jak odkryć, że to akurat czterdziesty ósmy - bo tego nie wiem, a nie jak sprawdzić czy czterdziesty ósmy jest ustawiony, bo to trywialne. -- howgh szemrany "Trzeba z żywymi naprzód iść, po życie sięgać nowe, a nie w uwiędłych laurów liść z uporem stroić głowę"
[toc] | [prev] | [next] | [standalone]
| From | "AK" <nobody@nowhere.com> |
|---|---|
| Date | 2015-09-01 13:01 +0200 |
| Message-ID | <ms40iv$b7t$1@node2.news.atman.pl> |
| In reply to | #27286 |
Użytkownik "szemrany" <szemrany@offline.off> napisał: > Hmm... tak, tylko, że ja pytam jak odkryć, że to akurat czterdziesty ósmy - > bo tego nie wiem, a nie jak sprawdzić czy czterdziesty ósmy jest ustawiony, > bo to trywialne. Szukaj polowkowo. AK --- Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe Avast. https://www.avast.com/antivirus
[toc] | [prev] | [next] | [standalone]
| From | voy <v_o_yNOSP@Mgazeta.pl> |
|---|---|
| Date | 2015-09-01 08:03 +0200 |
| Message-ID | <55e53fa3$0$27530$65785112@news.neostrada.pl> |
| In reply to | #27281 |
W dniu 2015-08-31 o 21:58, szemrany pisze:
> Hejka,
>
> Mam liczbę 64 bit, traktuję ją jako tablicę bitów, zazwyczaj są w niej
> ustawione jakieś bity, ale czasem nie.
> Jak najszybciej znaleźć indeks ustawionego bitu?
> Wiem jak szybko sprawdzić czy zapalone są wszystkie lub żaden, ale jak
> odkryć, że "pali" się np. czterdziesty ósmy?
> Najprostsza jest pętla z przesuwaniem bitowym i testem skrajnego bitu, ale
> w najgorszym razie trzeba przeiterować 63 razy.
> Może da się szybciej?
> Może jakieś operacje arytmetyczne?
>
Nie bardzo wiem o co Ci chodzi :),
ale masz tu przykład funkcji, która zlicza ilość ustawionych bitów,
iterując tylko po ustawionych:
BYTE GetBitCount( UINT uiBits )
{
BYTE byCnt = 0;
while( uiBits )
{
++byCnt;
uiBits &= (uiBits - 1);
}
return byCnt;
}
Pozdr :)
[toc] | [prev] | [next] | [standalone]
| From | szemrany <szemrany@offline.off> |
|---|---|
| Date | 2015-09-01 10:31 +0200 |
| Message-ID | <vog1oosex9o0.1uyizv5z3b4jm.dlg@40tude.net> |
| In reply to | #27289 |
On Tue, 1 Sep 2015 08:03:15 +0200, voy wrote: >> Może jakieś operacje arytmetyczne? > > Nie bardzo wiem o co Ci chodzi :), > ale masz tu przykład funkcji, która zlicza ilość ustawionych bitów, > iterując tylko po ustawionych: Ok, jeszcze raz, na liczbach 32 bitowych, żeby było prościej: - mam np. liczbe 1234567890 - binarnie to jest 01001001100101100000001011010010 - chcę teraz wyliczyć/znaleźć indeks pierszego zapalonego bitu - indeks liczę od prawej strony, jak wagi bitów - wynik: 1 (indeks bazujący na 0) drugi przykład: - liczba np. 4255820448 - binarnie 11111101101010101010101010100000 - wynik 5 I jak pisałem w pierwszym poście, czego raczyłeś nie wziąć pod uwagę, rozwiązanie bazujące na pętli odrzucam jako oczywiste i najprostsze. Szukam innego, szybszego. -- howgh szemrany "Trzeba z żywymi naprzód iść, po życie sięgać nowe, a nie w uwiędłych laurów liść z uporem stroić głowę"
[toc] | [prev] | [next] | [standalone]
| From | godek.maciek@gmail.com |
|---|---|
| Date | 2015-09-01 01:45 -0700 |
| Message-ID | <c985941c-1ad0-4e7f-80c5-f0d19c522a7a@googlegroups.com> |
| In reply to | #27293 |
W dniu wtorek, 1 września 2015 10:31:11 UTC+2 użytkownik szemrany napisał: > On Tue, 1 Sep 2015 08:03:15 +0200, voy wrote: > > >> Może jakieś operacje arytmetyczne? > > > > Nie bardzo wiem o co Ci chodzi :), > > ale masz tu przykład funkcji, która zlicza ilość ustawionych bitów, > > iterując tylko po ustawionych: > > Ok, jeszcze raz, na liczbach 32 bitowych, żeby było prościej: > > - mam np. liczbe 1234567890 > - binarnie to jest 01001001100101100000001011010010 > - chcę teraz wyliczyć/znaleźć indeks pierszego zapalonego bitu > - indeks liczę od prawej strony, jak wagi bitów > - wynik: 1 (indeks bazujący na 0) > > drugi przykład: > - liczba np. 4255820448 > - binarnie 11111101101010101010101010100000 > - wynik 5 > > I jak pisałem w pierwszym poście, czego raczyłeś nie wziąć pod uwagę, > rozwiązanie bazujące na pętli odrzucam jako oczywiste i najprostsze. > Szukam innego, szybszego. http://stackoverflow.com/questions/757059/position-of-least-significant-bit-that-is-set
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2015-09-01 02:57 -0700 |
| Message-ID | <9be90243-80e8-4a1a-b1e3-86aff8f10fd2@googlegroups.com> |
| In reply to | #27281 |
On Monday, August 31, 2015 at 9:58:51 PM UTC+2, szemrany wrote: > Hejka, > > Mam liczbę 64 bit, traktuję ją jako tablicę bitów, zazwyczaj są w niej > ustawione jakieś bity, ale czasem nie. > Jak najszybciej znaleźć indeks ustawionego bitu? > Wiem jak szybko sprawdzić czy zapalone są wszystkie lub żaden, ale jak > odkryć, że "pali" się np. czterdziesty ósmy? > Najprostsza jest pętla z przesuwaniem bitowym i testem skrajnego bitu, ale > w najgorszym razie trzeba przeiterować 63 razy. > Może da się szybciej? > Może jakieś operacje arytmetyczne? > > -- > howgh > szemrany > "Trzeba z żywymi naprzód iść, po życie sięgać nowe, > a nie w uwiędłych laurów liść z uporem stroić głowę" ( x & ~(x-1) )
[toc] | [prev] | [next] | [standalone]
| From | szemrany <szemrany@offline.off> |
|---|---|
| Date | 2015-09-01 12:23 +0200 |
| Message-ID | <1kwuko7di8gzf.14ac77llyzo4b$.dlg@40tude.net> |
| In reply to | #27296 |
On Tue, 1 Sep 2015 02:57:01 -0700 (PDT), M.M. wrote: > ( x & ~(x-1) ) Lub (x & -x ). To jest też w linku, który podał godek. Ale to zwraca wartość bitu, a nie indeks, czyli problem przesuwania nadal pozostaje. -- howgh szemrany "Trzeba z żywymi naprzód iść, po życie sięgać nowe, a nie w uwiędłych laurów liść z uporem stroić głowę"
[toc] | [prev] | [next] | [standalone]
| From | "Radoslaw Szwed" <radekszwed@pochta.fm> |
|---|---|
| Date | 2015-09-01 12:30 +0200 |
| Message-ID | <ms3upt$2tt$1@speranza.aioe.org> |
| In reply to | #27281 |
Użytkownik "szemrany" <szemrany@offline.off> napisał w wiadomości news:1i3y3j1aqrgzm.oc3pbikd1n92.dlg@40tude.net... > Hejka, > > Mam liczbę 64 bit, traktuję ją jako tablicę bitów, zazwyczaj są w niej > ustawione jakieś bity, ale czasem nie. > Jak najszybciej znaleźć indeks ustawionego bitu? Proponuję rozwiązanie sprzętowe za pomocą rozkazu BSR. W rejestrze RAX umieszczamy liczbę do sprawdzenia np.: mov rax, 10000000b bsr rbx, rax Po wykonaniu powyższych rozkazów w rejstrze RBX bedzie warość 7 Pozdrawiam Radek
[toc] | [prev] | [next] | [standalone]
| From | szemrany <szemrany@offline.off> |
|---|---|
| Date | 2015-09-01 13:04 +0200 |
| Message-ID | <tqmkcdqggj0x$.1feak4g81oghg$.dlg@40tude.net> |
| In reply to | #27298 |
On Tue, 1 Sep 2015 12:30:28 +0200, Radoslaw Szwed wrote: > mov rax, 10000000b > bsr rbx, rax Tylko, że rejest RAX wymaga x64, a ja kompiluję na 32 bity. Ale już ten rozkaz też biorę pod uwagę i go w testach zastosuję do dwóch połówek po 32 bity. -- howgh szemrany "Trzeba z żywymi naprzód iść, po życie sięgać nowe, a nie w uwiędłych laurów liść z uporem stroić głowę"
[toc] | [prev] | [next] | [standalone]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2015-09-01 13:37 +0200 |
| Message-ID | <ms42mn$p91$1@node1.news.atman.pl> |
| In reply to | #27300 |
On 01.09.2015 13:04, szemrany wrote: > On Tue, 1 Sep 2015 12:30:28 +0200, Radoslaw Szwed wrote: > >> mov rax, 10000000b >> bsr rbx, rax > > Tylko, że rejest RAX wymaga x64, a ja kompiluję na 32 bity. Ale już ten > rozkaz też biorę pod uwagę i go w testach zastosuję do dwóch połówek po 32 > bity. Nie musisz używaś assemblera. __builtin_ctz //gcc _BitScanForward, _BitScanForward64 //VS pzdr bartekltg
[toc] | [prev] | [next] | [standalone]
| From | szemrany <szemrany@offline.off> |
|---|---|
| Date | 2015-09-01 14:29 +0200 |
| Message-ID | <1xyw4mgi1m3zi.jhwepbwwnk41.dlg@40tude.net> |
| In reply to | #27301 |
On Tue, 01 Sep 2015 13:37:58 +0200, bartekltg wrote: > Nie musisz używaś assemblera. > > __builtin_ctz //gcc > _BitScanForward, _BitScanForward64 //VS > > pzdr > bartekltg Piszę w Delphi ;-) -- howgh szemrany "Trzeba z żywymi naprzód iść, po życie sięgać nowe, a nie w uwiędłych laurów liść z uporem stroić głowę"
[toc] | [prev] | [next] | [standalone]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2015-09-01 16:10 +0200 |
| Message-ID | <ms4bl6$mi9$1@node2.news.atman.pl> |
| In reply to | #27302 |
On 01.09.2015 14:29, szemrany wrote: > On Tue, 01 Sep 2015 13:37:58 +0200, bartekltg wrote: > >> Nie musisz używaś assemblera. >> >> __builtin_ctz //gcc >> _BitScanForward, _BitScanForward64 //VS >> >> pzdr >> bartekltg > > Piszę w Delphi ;-) Toto jeszcze żyje? ;-) Freepascal ma tu wbudowane: http://wiki.freepascal.org/FPC_New_Features_2.6.0#Bitscan_intrinsics delphi prawdopodobnie też, ale trzeba poszukać w ichniejszej dokumentacji... której na szybko nie wygoglalem;-) Z tego co pamietam procedury w asm pisało się tam bardzo przyjemnie, więc jak nie znajdziesz, zrób jak Radosław radzi i napisz samemu. bsf/bsr dzialają tak samo na 32 bitach, trzeba tylko pamitać, w czym przychodzi zmienna i gdzie umieścić wynik. pzdr bartekltg
[toc] | [prev] | [next] | [standalone]
| From | szemrany <szemrany@offline.off> |
|---|---|
| Date | 2015-09-01 17:28 +0200 |
| Message-ID | <xapwb1stftc5.1lbyl48jh2g2e$.dlg@40tude.net> |
| In reply to | #27304 |
On Tue, 01 Sep 2015 16:10:46 +0200, bartekltg wrote: >> Piszę w Delphi ;-) > > Toto jeszcze żyje? ;-) I ma się całkiem dobrze, poza ceną :/ > delphi prawdopodobnie też, ale trzeba poszukać w ichniejszej > dokumentacji... której na szybko nie wygoglalem;-) Nie spotkałem się i na 90% nie ma, ale sobie jeszcze zobacze jak to we FPC zrobili. > Z tego co pamietam procedury w asm pisało się tam bardzo przyjemnie, > więc jak nie znajdziesz, zrób jak Radosław radzi i napisz samemu. > bsf/bsr dzialają tak samo na 32 bitach, trzeba tylko pamitać, > w czym przychodzi zmienna i gdzie umieścić wynik. 1,5h przed Twoim postem pisałem, że to już zrobiłem, w asmie też ;-) -- howgh szemrany "Trzeba z żywymi naprzód iść, po życie sięgać nowe, a nie w uwiędłych laurów liść z uporem stroić głowę"
[toc] | [prev] | [next] | [standalone]
Page 1 of 2 [1] 2 Next page →
Back to top | Article view | pl.comp.programming
csiph-web