没有专门的输出二进制语句 需要自己写函数。
比如
void print_bin(int n)
{
int i;
for(i=sizeof(n)*4-1; i>=0; i --)
{
if(n&(1< else printf("0");
}
}
这个是通过位操作 来打印一个int型的所有二进制值的函数。
二进制数不能像十进制那样%d直接输出。
如果想输出一个数的二进制可以通过函数把其转成2进制字符串再将其输出。
itoa函数
原型:char*itoa(int value,char*string,int radix);
参数:int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等
功能:将任意类型的数字转换为字符串。在
参考代码:
1、
#include
#include
int main(void)
{
int number=10;
char string[25];
itoa(number,string,2);
printf("十进制数:%d,二进制数:%s\n",number,string);
return 0;
}
/*
十进制数:10,二进制数:1010
*/
2、
void print_bin(int n)
{
int l = sizeof(n)*8;//总位数。
int i;
if(i == 0)
{
printf("0");
return;
}
for(i = l-1; i >= 0; i --)//略去高位0.
{
if(n&(1< }
for(;i>=0; i --)
printf("%d", (n&(1<}
C语言中,默认支持16进制的数据输出,其实这个就是一个更容易阅读的二进制显示。
C语言的标准库,没有二进制输出函数,需要自己写,写法主要有两种:
除以2和对2取余数的循环;
位移操作和位与(&)操作;
第二种效率高些:
int dat = 12345;
int ibit = 0x01;
for(int i=31;i>=0;i--){
a[i] = (dat & ibit)==0 ? 0,1;
ibit << 1;
}
for(i=0;i<32;i++)
printf("%d",a[i]);