//用指针-指针计算字符串长度
/*
#include<stdio.h>
int my_len(char* arr)// 或者可以写成(char arr[])
{
char* stary = arr;
char* end = arr;
while(*end != '\0')
{
end++;
}
return end - stary;
}
int main()
{
char arr[] = "hello";
int len = my_len(arr);
printf("%d",len);
return 0;
}
*/
/*
int main()
{
int arr1[] = {1,3,5,7,9};
int arr2[] = {2,4,6,8,0};
int sz = sizeof(arr1)/sizeof(arr1[0]);
int i = 0;
for(i=0;i<sz;i++)
{
int tem = arr1[i];
arr1[i] = arr2[i];
arr2[i] = tem;
}
for(i=0;i<sz;i++)
{
printf("%d ",arr1[i]);
}
printf("\n");
for(i=0;i<sz;i++)
{
printf("%d ",arr2[i]);
}
}
*/
//求一个数的二进制中有几个1
//
#include<stdio.h>
int count_bit_one(unsigned int tem)
{
int count1 = 0;
while(tem)
{
if(tem%2 == 1)
{
count1++;
}
tem = tem/2;
}
return count1;
}
int count_bit_one1(int tem)
{
int count = 0;
int i = 0;
while(i<32)
{
if((tem>>i)&1 == 1)
{
count++;
}
i++;
}
return count;
}
int count_bit_one2(int tem)//此算法最简单
{
int count = 0;
while(tem)
{
tem = tem&(tem-1);
count++;
}
return count;
}
int main()
{
int a = 0;
scanf("%d",&a);
int count = count_bit_one2(a);
printf("%d",count);
return 0;
}