C语言printf如何输出二进制数格式?如何将十进制数按二进制数输出?C语言printf二进制输出字符的格式是什么?C语言可以二进制输出吗?
C语言printf打印没有提供二进制格式化输出转换说明,需要自定义实现输出二进制数格式,实现的算法主要是使用移位操作符,使用&与位操作,将1与各位比较提取各位出来,具体的实现算法如下:
void print_bin(int number);
void print_bin_simple(int number);
int main(void){
int number = 0xAF01BC;
print_bin(number); // 完全位二进制数格式输出
print_bin_simple(number); // 去掉前面无效0二进制数格式输出
return 0;
}
/*
* 二进制数格式输出,输出所有位
* 6bit
* 011010
* 100000 1<<5
* &
* */
void print_bin(int number){
int bit = sizeof(int)*8;
int i;
for(i = bit - 1;i >= 0;i--){
int bin = (number & (1 << i)) >> i;
printf("%d", bin);
}
printf("\n");
}
// 二进制数格式输出,输出有效位,过滤掉前面的0位
void print_bin_simple(int number){
int bit = sizeof(int)*8;
int i;
int status = 0;
for(i = bit - 1;i >= 0;i--){
int bin = (number & (1 << i)) >> i;
if(bin == 1)
status = 1;
if(status == 1)
printf("%d", bin);
}
printf("\n");
}
评论前必须登录!
注册