1.
写一个函数返回
参数二进制中 1 的个数
比如: 15 0000 1111 4 个 1
#define _CRT_SECURE_NO_WARNINGS 1
#include"stdio.h"
#include"windows.h"
int count_one_bits(unsigned int value)
{
int count=0;
while(value != 0)
{
if(value == 1)//等于1时跳出循环
{
count++;
break;
}
else if(value%2==1)//出现1
{
count++;
value=value/2;
}
else
value=value/2;//未出现1
}
return count;
}
int main()
{
unsigned int n=0;int ret =0;
printf("请输入一个十进制数\n");
scanf("%d",&n);
ret = count_one_bits(n);
printf("该数对应得二进制数中1的个数为:%d\n",ret);
system("pause");
return 0;
}
2
2.获取一个数二进制序列中所有的偶数位和奇数位,
分别输出二进制序列。
#define _CRT_SECURE_NO_WARNINGS 1
#include"stdio.h"
#include"windows.h"
void A(int a)
{
int i=0;
//int j=0;
int p=0;
int a1[15]={0};
int a2[15]={0};
while(a != 0)
{
p++;
i= a % 2;
a1[p]=i;
a =a / 2;
i= a % 2;
a2[p]=i;
a =a / 2;
}
printf("奇数位二进制序列从低位向前高位:");
for(p=0;p<15;p++)
printf("%d ",a1[p]);
printf("\n ");
printf("偶数位二进制序列从低位向前高位: ");
for(p=0;p<15;p++)
printf("%d ",a2[p]);
printf("\n");
}
int main ()
{
int a=0;
printf("请输入要处理的数");
scanf("%d",&a);
A(a);
system("pause");
return 0;
}
3. 输出一个整数的每一位。
#define _CRT_SECURE_NO_WARNINGS 1
#include"stdio.h"
#include"windows.h"
void Print(int n)
{
if(n / 10 == 0 && n != 0)//最高位
printf("%d ",n%10);
else //不是最高位
{
Print(n / 10);//n=n/10
printf("%d ",n%10);
}
}
int main ()
{
int n=0;
printf("请输入一个整数\n");
scanf("%d",&n);
Print(n);
system("pause");
return 0;
}
4.编程实现:
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:
1999 2299
输出例子:7
#define _CRT_SECURE_NO_WARNINGS 1
#include"stdio.h"
#include"windows.h"
#include"stdlib.h"
int num(int a,int b)
{
char A[32]={' '};char B[32]={' '};int i=0;int count=0;
for(i=0;i<32;i++)//转化位2进制存入数组
{
A[i]=a%2;
a=a/2;
B[i]=b%2;
b=b / 2;
if(A[i] != B[i] && A[i] != ' ' && B[i] != ' ')
count++;
}
return count ;
}
int main ()
{
int ret=0;
int a=0;
int b=0;
printf("请输入两个整数\n");
scanf("%d%d",&a,&b);
ret = num(a,b);
printf("不同位有%d个\n",ret);
system("pause");
return 0;
}