我们生活中使用的是十进制数,但是计算机常用的是二进制、八进制和十六进制。
二进制,八进制和十六进制必须采用某种特殊的写法,具体来说,就是在数字前面加上特定的字符,也就是加前缀。见下表:
| 进制 | 前缀 | 实例 |
|---|---|---|
| 二进制 | 0B(0b) | 0B11001110 |
| 八进制 | 0 | 075 |
| 十六进制 | 0X(0x) | 0X3A2F |
二进制数、八进制数和十六进制数的输出有相应的格式控制符,见下表:
| 进制 | 控制符 |
|---|---|
| 十进制 | %d |
| 八进制 | %o |
| 十六进制 | %x |
为了区分不同进制数字,推荐在输出时带上特定的前缀。在格式控制符中加上#即可输出前缀,例如 %#x、%#o、%#lX、%#ho 等。
实例:
#include <stdio.h>
int main(){
short a = 0b11001110; //二进制数字
int b = 075; //八进制数字
long c = 0X3A2F; //十六进制数字
printf("a=%#ho, b=%#o, c=%#lo\n", a, b, c); //以八进制形似输出
printf("a=%hd, b=%d, c=%ld\n", a, b, c); //以十进制形式输出
printf("a=%#hx, b=%#x, c=%#lx\n", a, b, c); //以十六进制形式输出(字母小写)
printf("a=%#hX, b=%#X, c=%#lX\n", a, b, c); //以十六进制形式输出(字母大写)
getch();
return 0;
}
运行结果:
a=0316, b=075, c=035057
a=206, b=61, c=14895
a=0xce, b=0x3d, c=0x3a2f
a=0XCE, b=0X3D, c=0X3A2F