C语言中怎么输出数据的二进制

2024-10-31 05:43:27
推荐回答(3个)
回答1:

没有专门的输出二进制语句 需要自己写函数。

比如

void print_bin(int n)
{
    int i;
    for(i=sizeof(n)*4-1; i>=0; i --)
    {
        if(n&(1<        else printf("0");
    }
}

这个是通过位操作 来打印一个int型的所有二进制值的函数。

回答2:

二进制数不能像十进制那样%d直接输出。

如果想输出一个数的二进制可以通过函数把其转成2进制字符串再将其输出。

itoa函数

原型:char*itoa(int value,char*string,int radix);

参数:int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等

功能:将任意类型的数字转换为字符串。在中与之有相反功能的函数是atoi。

参考代码:

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<}

回答3:

C语言中,默认支持16进制的数据输出,其实这个就是一个更容易阅读的二进制显示。

C语言的标准库,没有二进制输出函数,需要自己写,写法主要有两种:

  1. 除以2和对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]);