c语言的二进制数值如何直接输出?
展开全部
C标准没有输出二进制的,不过用itoa()可以实现到二进的转换。
1、在C语言程序中,可以使用标准库函数中printf()来向屏幕输出信息,或者使用sprintf()向缓冲区输出信息。对整数而言,可以使用%d、%o、%x(或%X)输出十进制形式、八进制、十六进制形式,但貌似缺乏二进制形式。
2、解决方式有两种,一种是利用Windows提供的itoa()函数,另一种自行设计一个新的函数:
代码一:
/** Test.h */
#pragma once
#ifndef Test_H
#define Test_H
/** use itoa() to print integers in the form of binary
* @param[in] n the integer to print
* @return void
*/
void printBinaryByItoa(unsigned int n);
代码二:
/** Test.c */
#include <stdio.h>
#include <stdlib.h>
void printBinaryByItoa(unsigned int n)
{
unsigned char data[33];
_itoa_s(n, data, 33, 2);
printf("%sb\n", data);
}
void printBinary(unsigned int n, unsigned char separator, unsigned char needPrefixZeros)
{
unsigned int i = 0;
unsigned int mask = 0; /* the mask code to get each bit of n */
unsigned char data[40]; /* the buffer to store the bits of n in the form of characters */
unsigned int index = 0; /* used to access data[] */
unsigned int start = 0; /* to point out where and when to store bits of n */
data[39] = '\0';
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就像楼上说的,二进制是不可以直接输出的,但是可以用程序输出
#include<stdio.h>
void f(int n)
{
if(n) f(n/2);
else return;
printf("%d",n%2);
}
int main()
{
int n;
while(1)
{
scanf("%d",&n);
if(n<0) break;
if(n==0) printf("0");
f(n);
printf("\n");
}
return 0;
}
#include<stdio.h>
void f(int n)
{
if(n) f(n/2);
else return;
printf("%d",n%2);
}
int main()
{
int n;
while(1)
{
scanf("%d",&n);
if(n<0) break;
if(n==0) printf("0");
f(n);
printf("\n");
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void B_print (unsigned char B)//八位二进制输出
{
char j;
for(j=8;j>0;j--){printf("%d\t",(1&(B>>j)));}
}
想要几位改循环次数和就行了
{
char j;
for(j=8;j>0;j--){printf("%d\t",(1&(B>>j)));}
}
想要几位改循环次数和就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询