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;
}