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; // 标记是否已经遇到第一个1
printf("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,说明是0
printf("0");
}
printf("\n"); // 打印完后换行
}
int main() {
int x = 10; // 10的二进制表示是1010
printf("Binary of %d: ", x); //输出:Binary of 10: 0b1010
print_binary(x); // 打印二进制
x = 0; // 0的二进制表示是0
printf("Binary of %d: ", x);/输出:Binary of 0: 0b0
print_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的八进制是 12
printf("Octal: %o\n", x); // 打印八进制
return 0;
}
输出:
Octal: 12
3. 打印十进制
C 语言中,printf
函数的格式化符 %d
和 %i
用于打印十进制数:
示例代码:
#include <stdio.h>
int main() {
int x = 255; // 255的十制是255
printf("%i\n", x); // 输出:255
printf("%d\n", x); // 输出:255
return 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的十六进制是FF
printf("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
(大写)格式化符。