使用C将整数转换为二进制表示?

我仍然是编码的初学者,所以我遇到了这个问题,我试图将整数转换为二进制表示

#include  int main () { int x; printf("input the number\n"); scanf("%d",&x); while(x!=0) { if (x%2) printf("1"); else printf("0"); } return 0; } 

所以输出像1​​2 = 0011但12 = 1100有什么问题,如何解决?

操作的程序逻辑是错误的,试试这个

 #include  int main() { int n, c, k; printf("Enter an integer in decimal number system\n"); scanf("%d", &n); printf("%d in binary number system is:\n", n); for (c = 31; c >= 0; c--) { k = n >> c; if (k & 1) printf("1"); else printf("0"); } printf("\n"); } return 0; } 

解决方案是使用递归。

 void put_binary (unsigned int x) { if (x <= 1) { putchar('0' + x); } else { put_binary (x / 2u); putchar ('0' + x % 2u); } } 

一种更有效的方法是使用按位运算符(它打印每个数字)。

 #define GET_BIT(x, i) (((x) >> (i)) & 1) void put_binary (unsigned int x) { unsigned int max = sizeof x * CHAR_BIT; unsigned int i; for (i = 0u; i < max; i++) { putchar ('0' + GET_BIT (x, max - i - 1u)); } } 
 bool seeOne = false; for (int i = 0; i < sizeof(int); i++) { int bit = (x >> sizeof(int) - 1 - i) & 1; if (bit) { print("1"); seeOne = true; } else { if (seeOne) print("0"); } }