22. c语言怎么打印2进制、8进制、10进制、16进制数?
在 C 语言中,打印不同进制的数字格式可以使用不同的格式化字符串。以下是如何打印二进制、八进制和十六进制数值的方法:
1. 打印二进制
C 语言的 printf
函数没有内置直接打印二进制数的格式化符号,需要自定义函数来实现二进制打印。
示例代码:
#include <stdio.h>// 自定义函数,打印整数的二进制表示,跳过前导0
void print_binary(int num) {int size = sizeof(num) * 8; // 获取整数类型的总位数int started = 0; // 标记是否已经遇到第一个1printf("0b");for (int i = size - 1; i >= 0; i--) {int bit = (num >> i) & 1; // 通过位移提取每一位if (bit == 1) {started = 1; // 遇到第一个1时,标记开始打印}if (started) { // 只在遇到第一个1后开始打印printf("%d", bit);}}if (!started) { // 如果没有遇到1,说明是0printf("0");}printf("\n"); // 打印完后换行
}int main() {int x = 10; // 10的二进制表示是1010printf("Binary of %d: ", x); //输出:Binary of 10: 0b1010print_binary(x); // 打印二进制x = 0; // 0的二进制表示是0printf("Binary of %d: ", x);/输出:Binary of 0: 0b0print_binary(x);return 0;
}
输出:
Binary of 10: 0b1010
Binary of 0: 0b0
2. 打印八进制
C 语言中,printf
函数的格式化符 %o
用于打印八进制数。
示例代码:
#include <stdio.h>int main() {int x = 10; // 10的八进制是 12printf("Octal: %o\n", x); // 打印八进制return 0;
}
输出:
Octal: 12
3. 打印十进制
C 语言中,printf
函数的格式化符 %d
和 %i
用于打印十进制数:
示例代码:
#include <stdio.h>int main() {int x = 255; // 255的十制是255printf("%i\n", x); // 输出:255printf("%d\n", x); // 输出:255return 0;
}
输出:
255
255
4. 打印十六进制
C 语言中,printf
函数的格式化符 %x
和 %X
用于打印十六进制数:
%x
:以小写字母打印(a, b, c, d, e, f)。%X
:以大写字母打印(A, B, C, D, E, F)。
示例代码:
#include <stdio.h>int main() {int x = 255; // 255的十六进制是FFprintf("Hexadecimal (lowercase): %x\n", x); // 小写printf("Hexadecimal (uppercase): %X\n", x); // 大写return 0;
}
输出:
Hexadecimal (lowercase): ff
Hexadecimal (uppercase): FF
总结:
- 二进制:通过自定义函数打印,C 语言没有内置的二进制格式化符。
- 八进制:使用
%o
格式化符。 - 十进制:使用
%d
或%i
格式化符。 - 十六进制:使用
%x
(小写)或%X
(大写)格式化符。