#include <stdio.h>#include <math.h>int main()
{
int i = 0;
int y = 0;
int j = 0;
int z = 0;
int x = 0;
scanf("%d",&i);
j = i;
//计算整数的位数while(j)
{
j = j/10;
y++;
}
printf("这个数有%d位\n",y);
//输出每个位数上的数for(x=0; x<y; y--)
{
z = i/(int)(pow(10,(y-1)));
i = i%(int)(pow(10,(y-1)));
printf("%d ",z);
}
return0;
}
两个int整数二进制表中,有多少个bit位不同?
#include <stdio.h>int main()
{
int x = 0;
int y = 0;
int i = 0;
int j = 0;
int count = 0;
scanf("%d,%d",&x,&y);
i = (sizeof((x>y)?x:y))*8; //计算较大值所占用的bit位printf("两个数中较大的数字有%d个bit位\n",i);
for(j=0; j<i; j++) //用i来控制最大循环次数
{
//两个数都与1“与”运算得到两个数的最低位并比较if((x&1) != (y&1))
{
count++; //不同则累计一次
}
//两个数都向右右移一位
x = x>>1;
y = y>>1;
}
printf("有%d个位不同\n",count);
return0;
}