Du hast in deinem Codeschnipsel die wichtigsten Deklarrationen nicht gepostet,aber egal.
Einmal wird bei dir in jedem Schleifendurchlauf zaehler1 inkrementiert,und die if-Bedingung ist etwas falsch.
Code:
int t = 10;
int zaehler1 = 0;
int n = 1;
for(int i = 0; i < 8; ++i)
{
if (t & n)
++zaehler1;
n <<= 1;
}
printf(" zaehler1\t = %i\n", zaehler1);
printf(" n\t\t = %i\n", n);
oder kürzer,falls du weißt,daß dein System im 2er-Komplement arbeitet
Code:
size_t bitcount(unsigned int nr)
{
size_t res = nr != 0;
while(nr &= (nr - 1))
res++;
return res;
}
Lesezeichen