-
Data: 2015-09-01 22:20:03
Temat: Re: Szybkie szukanie ustawionego bitu
Od: szemrany <s...@o...off> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Tue, 1 Sep 2015 14:40:34 +0200, szemrany wrote:
> Czas: 813 ms
> Czas: 67 ms
> Czas: 51 ms
> Czas: 28 ms
Specjalnie dla AK źrodła funkcji:
function SzukajBita_1(u64 : UInt64) : Integer;
var
I: Integer;
u32: UInt32;
begin
I := 0;
while u64 and 1 <> 1 do
begin
u64 := u64 shr 1;
Inc(i);
end;
Result := I;
end;
function SzukajBita_2(u64 : UInt64) : Integer;
var
I: Integer;
begin
I := 0;
if (u64 and $00000000FFFFFFFF) = 0 then
begin
I := I + 32;
u64 := u64 shr 32;
end;
if (u64 and $000000000000FFFF) = 0 then
begin
I := I + 16;
u64 := u64 shr 16;
end;
if (u64 and $00000000000000FF) = 0 then
begin
I := I + 8;
u64 := u64 shr 8;
end;
if (u64 and $000000000000000F) = 0 then
begin
I := I + 4;
u64 := u64 shr 4;
end;
if (u64 and $0000000000000003) = 0 then
begin
I := I + 2;
u64 := u64 shr 2;
end;
if (u64 and $0000000000000001) = 0 then
begin
I := I + 1;
end;
Result := I;
end;
function SzukajBita_3(u64 : UInt64) : Integer;
var
I: Integer;
u32: UInt32;
begin
I := 0;
u64 := u64 and -u64;
u32 := u64 and $ffffffff;
if u32 = 0 then
begin
u32 := u64 shr 32;
I := 32;
end;
case u32 of
2: Inc(I, 1);
4: Inc(I, 2);
8: Inc(I, 3);
16: Inc(I, 4);
32: Inc(I, 5);
64: Inc(I, 6);
128: Inc(I, 7);
256: Inc(I, 8);
512: Inc(I, 9);
1024: Inc(I, 10);
2048: Inc(I, 11);
4096: Inc(I, 12);
8192: Inc(I, 13);
16384: Inc(I, 14);
32768: Inc(I, 15);
65536: Inc(I, 16);
131072: Inc(I, 17);
262144: Inc(I, 18);
524288: Inc(I, 19);
1048576: Inc(I, 20);
2097152: Inc(I, 21);
4194304: Inc(I, 22);
8388608: Inc(I, 23);
16777216: Inc(I, 24);
33554432: Inc(I, 25);
67108864: Inc(I, 26);
134217728: Inc(I, 27);
268435456: Inc(I, 28);
536870912: Inc(I, 29);
1073741824: Inc(I, 30);
2147483648: Inc(I, 31);
4294967296: Inc(I, 32);
end;
Result := I;
end;
function SzukajBita_4(u64 : UInt64) : Integer;
begin
asm
MOV EAX, -1
BSF EAX, DWORD PTR [&u64]
JNZ @@Exit
BSF EAX, DWORD PTR [&u64 + 4]
JZ @@Exit
ADD EAX, 32
@@Exit:
MOV &Result, EAX
end;
end;
--
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ę"
Następne wpisy z tego wątku
- 04.09.15 09:14 Wojciech Muła
- 04.09.15 09:53 szemrany
- 04.09.15 17:01 Wojciech Muła
- 04.09.15 20:20 szemrany
- 07.09.15 09:46 Radoslaw Szwed
Najnowsze wątki z tej grupy
- Xiaomi [Chiny - przyp. JMJ] produkuje w całkowitych ciemnościach i bez ludzi
- Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- Rosjanie chwalą się prototypem komputera kwantowego. "Najważniejszy projekt naukowy Rosji"
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
Najnowsze wątki
- 2026-01-14 Do Kongresu SZAP/USONA Złożono Proj. ,,Ustawy o aneksji i statusie stanowym Grenlandii"
- 2026-01-13 STREFA CZYSTEGO TRANSPORTU. O tym nie mówią nam WŁADZE
- 2026-01-13 To nie koniec
- 2026-01-13 Warszawa => Recruiter 360 <=
- 2026-01-13 Katowice => Key Account Manager <=
- 2026-01-13 Warszawa => Senior Backend Java Developer <=
- 2026-01-13 Wrocław => ERP Implementation Consultant <=
- 2026-01-13 Elektryk a otwieranie drzwi :-)
- 2026-01-12 Schemat automatyki
- 2026-01-12 Xiaomi [Chiny - przyp. JMJ] produkuje w całkowitych ciemnościach i bez ludzi
- 2026-01-12 Polska Grupa Zbrojeniowa (85% udziałów) Likwiduje Stomil-Poznań - Zakład Działał Od 1928r.
- 2026-01-12 Teoretyczne zagadnienie - ogrzewanie budynku
- 2026-01-12 Xiaomi [Chiny - przyp. JMJ] produkuje w całkowitych ciemnościach i bez ludzi
- 2026-01-12 Xiaomi [Chiny - przyp. JMJ] produkuje w całkowitych ciemnościach i bez ludzi
- 2026-01-12 Polska Grupa Zbrojeniowa (85% udziałów) Likwiduje Stomil-Poznań - Zakład Działał Od 1928r.




5 Najlepszych Programów do Księgowości w Chmurze - Ranking i Porównanie [2025]