eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingSzybkie szukanie ustawionego bituRe: Szybkie szukanie ustawionego bitu
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!.POSTED!not-for-mail
    From: Tomek Kańka <t...@t...eu.org>
    Newsgroups: pl.comp.programming
    Subject: Re: Szybkie szukanie ustawionego bitu
    Date: Mon, 31 Aug 2015 21:21:18 +0000 (UTC)
    Organization: ATMAN - ATM S.A.
    Lines: 31
    Message-ID: <s...@t...dom.local>
    References: <1...@4...net>
    <s...@t...dom.local>
    <v13fst2yrtuh$.1su3vdc690vq2.dlg@40tude.net>
    NNTP-Posting-Host: 185.78.135.50
    Mime-Version: 1.0
    Content-Type: text/plain; charset=utf-8
    Content-Transfer-Encoding: 8bit
    X-Trace: node2.news.atman.pl 1441056078 28412 185.78.135.50 (31 Aug 2015 21:21:18
    GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Mon, 31 Aug 2015 21:21:18 +0000 (UTC)
    User-Agent: slrn/1.0.2 (Linux)
    Xref: news-archive.icm.edu.pl pl.comp.programming:208083
    [ ukryj nagłówki ]

    szemrany <s...@o...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

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: