← 返回首页
C语言系列教程(四)
发表时间:2021-03-18 09:41:51
数制转换

我们生活中使用的是十进制数,但是计算机常用的是二进制、八进制和十六进制。

二进制,八进制和十六进制必须采用某种特殊的写法,具体来说,就是在数字前面加上特定的字符,也就是加前缀。见下表:

进制 前缀 实例
二进制 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