bitnummer bepalen van eerste bit = true in een word

Status
Niet open voor verdere reacties.

IkBenHetMaar

Gebruiker
Lid geworden
23 mrt 2012
Berichten
18
Hallo

weet er iemand hoe ik het bitnummer kan bepalen van de eerste bit die true staat in een word?

met andere woorden:

0000000000000001 geeft 1
0000000000000010 geeft 2
0000000000000011 geeft 1
1000000000000000 geeft 16
enz...

heb het momenteel met 16 if then else instructies gedaan maar wil dit dus sterk vereenvoudigen indien mogelijk...

Groetjes
 
Als je alleen de positie moet bepalen.
- Draai de array of list met bits om (het laatste bitje komt dus op de eerste positie et cetera).
- Loop door de array of list met bitjes heen (dit kan gewoon een for-loop zijn).
- Als een bitje true is, return de positie van het element en stop met bekijken van de bitreeks.

Ik heb al heel lang geen c++ meer geprogrammeerd, dus excuses als er veel fouten inzitten. Ik denk dat het onderstaande de strekking kan zijn.

Code:
.. header file MyClass.h
std::list<int>* bitreeks;

...

MyClass::zetWoordOmInBitreeks(...)
...

int MyClass::eersteBitWaarInWoord(std::list<int>* bitreeks) {
    bitreeks->reverse();
    int positie = 0;
    for (std::list<int>::iterator it = bitreeks->begin(); it != bitreeks->end(); ++it) {
          if(**it == true) {
               return position;
          }
          positie++;
    }
    return 0;
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan