/*
输入一个整数,输出其二进制形式
Design By leewong
*/
#include<>
#include<>
int printBinary(int a)
{
//将这个整数转为二进制形式
//求出二进制位数
int size = sizeof(a)*8 - 1;
while (size >= 0)
{
if((size+1)% 4 == 0)
{
printf(" ");//每隔四位添加空格
}
printf("%d",a>>size & 1);
size--;
}
printf("\n");
return 0;
}
/*int printBinary(int a)
{
//C语言中不能定义未知大小的数组 次程序不适用
//求出二进制位数
int size = sizeof(a)*8;
//定义一个数组存储该整数的二进制形式
int b[size];
int i = 0;//记录数组位置
size--;
while (size >= 0)
{
if((size+1) % 4 == 0)
{
printf(" ");
}
if(a/(pow(2,size)) == 0)
{
b[i] = 0;
}
else
{
b[i] = 1;
}
a = a - pow(2,size)*b[i];
size--;
i++;
}
for(int i=(sizeof(a)*8-1) ;i>=0;i--)
{
printf("%d",b[i]);
}
printf("\n");
}*/
int main()
{
//输入一个整数
int a,d;
printf("请输入一个整数:");
scanf("%d",&a);
d=a;//记录
// printBinary(a);
//将这个整数转为二进制形式
//求出二进制位数
int size = sizeof(a)*8 -1;
int result;
while (size >= 0)
{
if((size+1) % 4 == 0)
{
printf(" ");
}
double temp = pow(2.0,size);
int temp1 = a/temp;
if(temp1 == 0)//从高到低判断 若=0则 a<pow(2,size) 若=1则a>pow(2,size)
{
result = 0;
printf("%d",result);
}
else
{
result = 1;
printf("%d",result);
}
a = a - temp*result;//将 a的值减去将该位置1后的 差 赋值给 a进行下一轮的判断
size--;
}
printf("\n");
}
老师讲的我封装起来了,自己想的写到了主函数里!
移位操作对于某些操作真的是太方便了!