64 ビット数で 2 つの 1 の位置を見つけようとしています。この場合、それらは 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);
}
}
}