Bitshiften ein Lösung?
-
So, wie kann ich. Feststellen wieviele Bits ein sind?
z.B. Ich habe den Wert 0xF800 (Bit: 1111100000000000). So wie finde ich raus wieviele eines das sind.
-
zB mit folgender Funktion
unsigned int bit_count(unsigned int x) { unsigned int n = 0; while (x != 0) { x &= x - 1; ++n; } return n; }
-
Bitshiften ist schon eine Möglichkeit.
Ich würd vorschlagen, einen Wert zum Vergleich zu shiften, anstatt die zu testende Zahl zu shiften.unsigned char zahl = 57; int i, val = 1, count = 0; for (i=0; i<sizeof(zahl)*8; i++) { if (zahl & val) count++; val <<= 1; }
-
SeppSchrot schrieb:
Ich würd vorschlagen, einen Wert zum Vergleich zu shiften
Darf man fragen wieso? (zudem hat deine Funktion mehr als die doppelte Laufzeit wie meine
)
-
while(b)++cnt,b&=b-1;