没有直接的方法(即使用printf
或其他标准库函数)来打印它.你必须编写自己的函数.
/* This code has an obvious bug and another non-obvious one :) */ void printbits(unsigned char v) { for (; v; v >>= 1) putchar('0' + (v & 1)); }
如果您正在使用终端,则可以使用控制代码按自然顺序打印字节:
void printbits(unsigned char v) { printf("%*s", (int)ceil(log2(v)) + 1, ""); for (; v; v >>= 1) printf("\x1b[2D%c",'0' + (v & 1)); }
根据dirkgently的答案,但修复他的两个错误,并始终打印固定数字的数字:
void printbits(unsigned char v) { int i; // for C89 compatability for(i = 7; i >= 0; i--) putchar('0' + ((v >> i) & 1)); }
是(自己编写),类似以下完整功能.
#include/* only needed for the printf() in main(). */ #include /* Create a string of binary digits based on the input value. Input: val: value to convert. buff: buffer to write to must be >= sz+1 chars. sz: size of buffer. Returns address of string or NULL if not enough space provided. */ static char *binrep (unsigned int val, char *buff, int sz) { char *pbuff = buff; /* Must be able to store one character at least. */ if (sz < 1) return NULL; /* Special case for zero to ensure some output. */ if (val == 0) { *pbuff++ = '0'; *pbuff = '\0'; return buff; } /* Work from the end of the buffer back. */ pbuff += sz; *pbuff-- = '\0'; /* For each bit (going backwards) store character. */ while (val != 0) { if (sz-- == 0) return NULL; *pbuff-- = ((val & 1) == 1) ? '1' : '0'; /* Get next bit. */ val >>= 1; } return pbuff+1; }
将此main添加到它的末尾以查看它的运行情况:
#define SZ 32 int main(int argc, char *argv[]) { int i; int n; char buff[SZ+1]; /* Process all arguments, outputting their binary. */ for (i = 1; i < argc; i++) { n = atoi (argv[i]); printf("[%3d] %9d -> %s (from '%s')\n", i, n, binrep(n,buff,SZ), argv[i]); } return 0; }
运行它"progname 0 7 12 52 123"
得到:
[ 1] 0 -> 0 (from '0') [ 2] 7 -> 111 (from '7') [ 3] 12 -> 1100 (from '12') [ 4] 52 -> 110100 (from '52') [ 5] 123 -> 1111011 (from '123')
#include#include #include using namespace std; void displayBinary(int n) { char bistr[1000]; itoa(n,bistr,2); //2 means binary u can convert n upto base 36 printf("%s",bistr); } int main() { int n; cin>>n; displayBinary(n); getch(); return 0; }