1-# include<stdio.h>
int main()
{
int num =15;
int count = 0;
while (num)
{
count++;
num = num&(num - 1);
}
printf("1的个数为:%d\n", count);
system("pause");
return 0;
}
2-# include<stdio.h>
int main()
{
int num = 15;
int count = 0;
int i = 0;
for (i = 0; i < 32; i++)
{
if ((num >> i) & 1 == 1)
count++;
}
printf("1的个数为:%d\n", count);
system("pause");
return 0;
}
2.获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
# include<stdio.h>
int main()
{
int num = 10;
int i = 0;
for (i = 31; i>0; i -= 2)
{
printf("%d ", (num >> i) & 1);
}
printf("\n");
for (i = 30; i >= 0; i -= 2)
{
printf("%d ", (num >> i) & 1);
}
system("pause");
return 0;
}
3. 输出一个整数的每一位
# include <stdio.h>
int main()
{
int num = 1234;
while (num)
{
printf("%d ", num % 10);
num = num / 10;
}
system("pause");
return 0;
}
4.编程实现:
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:
1999 2299
输出例子:7
# include<stdio.h>
int count_one_biits(int n)
{
int count = 0;
while (n)
{
count++;
n = n&(n - 1);
}
return count;
}
int main()
{
int m = 1999;
int n = 2299;
int tmp = m^n;
int ret = 0;
ret = count_one_biits(tmp);
printf("ret=%d\n", ret);
system("pause");
return 0;
}