Я пытаюсь найти положение двух 1 в 64-битном номере. В этом случае они находятся на 0-й и 63-й позиции. Код здесь возвращает 0 и 32, что только половина права. Почему это не работает?
#include<stdio.h>
void main()
{
unsigned long long number=576460752303423489;
int i;
for (i=0; i<64; i++)
{
if ((number & (1 << i))==1)
{
printf("%d ",i);
}
}
}