2025-06-27 06:36:59
没有专门的输出
比如
void print_bin(int n)
{
int i;
for(i=sizeof(n)*4-1; i>=0; i --)
{
if(n&(1<<i))printf("1");
else printf("0");
}
}
这个是通过位操作 来打印一个int型的所有二进制值的函数。
2025-06-27 16:20:36
二进制数不能像十进制那样%d直接输出。
如果想输出一个数的二进制可以通过函数把其转成2进制字符串再将其输出。
itoa函数
原型:char*itoa(int value,char*string,int radix);
参数:int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等
功能:将任意类型的数字转换为字符串。在<stdlib.h>中与之有相反功能的函数是atoi。
参考代码:
1、
#include <stdlib.h>
#include <stdio.h>
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<<i)) break;
}
for(;i>=0; i --)
printf("%d", (n&(1<<i)) != 0);
}
2025-06-27 13:47:16
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]);