std::bitset.. frage:
-
folgedends
UINT iFlags=0; #define N 10 #define TYP_A 0x1; #define TYP_B 0x2; #define TYP_C 0x4; #define TYP_D 0x8; #define TYP_E 0x10; int Dummy= TYP_A | TYP_B | TYP_D; for(int i=0; i< N; i++) if(Dummy & (int)pow(2,i)) //Typ vorhandenwie kann ich das mit std:bitset machen? -> if(Dummy & (int)pow(2,i))
-
BorisDieKlinge schrieb:
wie kann ich das mit std:bitset machen? -> if(Dummy & (int)pow(2,i))
Das ist nicht ernstgemeint, oder? Und das von dem, der immer nach Performance fragt

if ( Dummy & ( 1 << i ) )Bitset:
dummyBs.test(i)
-
oh peinlich.... das bitshift gedöns hat mir grad im kopf gefehlt.. naja früh am morgen^^
-
noch ne frage:
ist
UINT A=..; UINT B=..; A |= B;aqvivalent zu
std:bitset<32> A(..); std:bitset<32> B(..); A |= B;
-
Ja, ist es (zumindest funktionell, wenn du die UINT's als Flag-Variablen deutest).
-
jo deute ich
Danke;)
-
uuuunnd nochmal was... gibt es ne funktion welche mit den index des letzten gesetzes bits der bitsets liefert?
00101111000110
-> 13
-
Ist mir keine bekannt - du kannst nur in einer Schleife durchlaufen, bis du das erste gesetzte Bit gefunden hast:
int pos = bs.size()-1; for(;bs.test(pos);--pos); cout<<"höchstest Bit an Index "<<pos<<endl;
-
ok danke;)