众所周知,C中以八进制,十进制和十六进制都可以通过%o,%d和%x轻松实现,然而唯独没有提供二进制输出的快速方式。
方法一:itoa函数
itoa函数将数值转换为字符串,通过规定转换进制实现。
#include<stdio.h>
#include<stdlib.h>
//注意必须调用stdlib.h函数库
int main(void)
{
while(1)
{
int a;
printf("请输入一个十进制数: ");
scanf("%d",&a);
char str[30];
itoa(a,str,2);//2即是代表转换为2进制
printf("转换成二进制数是: %s\n\n",str);
}
return 0;
}
函数:itoa(integer to array)
功能:把一整数转换为字符串
用法:char *itoa(int value, char *string, int radix); 将int整型数转化为一个字符串,并将值保存在数组string中。
value: 待转化的整数。
radix:是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。
* string:保存转换后得到的字符串。
返回值:
char *:指向生成的字符串, 同*string。
头文件:"stdlib.h"
方法二:短除法
短除法,将十进制转换为二进制的笔算过程。
#include<stdio.h>
int main()
{
int a,b,k,i;
int remainder[30];
while(1)
{
//定义了一个remainder数组,用来收集短除法除得的余数,栈倒序输出。
printf("请输入一个十进制数: ");
scanf("%d",&a);
k=0;
while(a!=0)
{
b=a/2;
k++;
remainder[k]=a-b*2;
a=a/2;
};
printf("转换成二进制数是: ");
for (i=k; i>=1; i--)
{
printf("%d",remainder[i]);
}
printf("\n\n");
}
return 0;
}
感谢博主:https://blog.csdn.net/wjkhello/article/details/78149441