1、自定义函数打印二进制格式
由于 printf
不支持 %b
来打印二进制格式,可以编写一个自定义函数来打印整数的二进制表示。
#include <stdio.h> void print_binary(unsigned int n) { for (int i = sizeof(n) * 8 - 1; i >= 0; i--) { putchar((n & (1 << i)) ? '1' : '0'); } putchar('\n'); } int main() { unsigned int num = 5; print_binary(num); // 输出: 00000000000000000000000000000101 return 0; }
2、使用 printf 和位掩码
如只打印有效位(忽略前导零),可以使用以下方法。
#include <stdio.h> void print_binary(unsigned int n) { int i; int leading_zero = 1; for (i = sizeof(n) * 8 - 1; i >= 0; i--) { int bit = (n >> i) & 1; if (bit == 1) { leading_zero = 0; } if (!leading_zero) { printf("%d", bit); } } if (leading_zero) { printf("0"); } printf("\n"); } int main() { unsigned int num = 5; print_binary(num); // 输出: 101 return 0; }
3、使用 C++ 中的 std::bitset
如在使用 C++,可以使用 std::bitset
类,它直接提供了打印二进制格式的方法。
#include <iostream> #include <bitset> int main() { int num = 5; // 创建一个 32 位的数字表示 std::bitset<32> b(num); // 输出: 00000000000000000000000000000101 std::cout << b << std::endl; return 0; }
4、使用 itoa 函数(非标准)
一些平台提供了非标准的 itoa()
函数,它可以用来将整数转换为不同进制的字符串,包括二进制。
#include <stdio.h> #include <stdlib.h> int main() { int num = 5; char binary[33]; // 用于存储二进制字符串的数组 itoa(num, binary, 2); // 转换为二进制(基数 2) printf("%s\n", binary); // 输出: 101 return 0; }