二、计算出一个整形包含多少个一
#include <stdio.h>int Count(unsignedint number)
{
int sum = 0,n;
if(number == 0)
return0;
/*while(number) // 方法1,效率低
{
if(number % 2 == 1)
sum ++;
number /= 2;
}*/for(n =0 ; n<8 ;n++) // 方法二,效率高
{
if((number>>n)&0x01)
sum++;
}
return sum;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",Count(n));
return0;
}
三、判断当前系统的大小端序
#include <stdio.h>
union test
{
int a;
char c;
}endian;
static union
{
char c[4];
unsigned long l;
}endian_test = {{'l',' ',' ',' b'}};
#define ENDIAN_TEST ((char )endian_test.l)int main()
{
// 方法一:
endian.a = 0x12345678;
if(endian.c == 0x78)
{
printf("the cpu is little endian\n");
}else
{
printf("the cpu is big endian\n");
}
// 方法二:int a = 0x12345678;
char p = *(&a);
if(p == 0x78)
{
printf("the cpu is little endian\n");
}else
{
printf("the cpu is big endian\n");
}
// 方法三:
printf("%c\n",ENDIAN_TEST); // 输出'l'为小端序,输出'b'为大端序return0;
}