【C笔记】进制

  1. 二进制

二进制由 0 和 1 两个数字组成,使用时必须以0b或0B(不区分大小写)开头

例:

//合法的二进制

int a = 0b101;  //换算成十进制为 5

int b = -0b110010;  //换算成十进制为 -50

int c = 0B100001;  //换算成十进制为 33

//非法的二进制

int m = 101010;  //无前缀 0B,相当于十进制

int n = 0B410;  //4不是有效的二进制数字

  1. 八进制

八进制由0~7八个数字组成,使用时必须以0开头(注意是数字 0,不是字母 o)

例:

//合法的八进制数

int a = 015;  //换算成十进制为 13

int b = -0101;  //换算成十进制为 -65

int c = 0177777;  //换算成十进制为 65535

//非法的八进制

int m = 256;  //无前缀 0,相当于十进制

int n = 03A2;  //A不是有效的八进制数字

  1. 十进制

十进制由 0~9 十个数字组成,没有任何前缀

  1. 十六进制

十六进制由数字 0~9、字母 A~F 或 a~f(不区分大小写)组成,使用时必须以0x或0X(不区分大小写)开头

例:

//合法的十六进制

int a = 0X2A;  //换算成十进制为 42

int b = -0XA0;  //换算成十进制为 -160

int c = 0xffff;  //换算成十进制为 65535

//非法的十六进制

int m = 5A;  //没有前缀 0X,是一个无效数字

int n = 0X3H;  //H不是有效的十六进制数字

二进制数、八进制数和十六进制数的输出

C语言中常用的整数有 short、int 和 long 三种类型,通过 printf 函数,可以将它们以八进制、十进制和十六进制的形式输出

下表列出了不同类型的整数、以不同进制的形式输出时对应的格式控制符:

short

int

long

八进制

%ho

%o

%lo

十进制

%hd

%d

%ld

十六进制

%hx或%hX

%x或%X

%lx或%lX

注:十六进制中“X”,“x”决定输出后十六进制中字母的大小写

例:

int main()

{

    short a = 0b1010110;  //二进制数字

    int b = 02713;  //八进制数字

    long c = 0X1DAB83;  //十六进制数字

   

    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);  //以十六进制形式输出(字母大写)

    return 0;

}

运行结果:

#include <stdio.h>

a=126, b=2713, c=7325603

a=86, b=1483, c=1944451

a=56, b=5cb, c=1dab83

a=56, b=5CB, c=1DAB83

如何令输出时加上前缀:

区分不同进制数字的一个简单办法就是,在输出时带上特定的前缀。在格式控制符中加上‘#’即可输出前缀
例:

#include <stdio.h>

int main()

{

    short a = 0b1010110;  //二进制数字

    int b = 02713;  //八进制数字

    long c = 0X1DAB83;  //十六进制数字

   

    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);  //以十六进制形式输出(字母大写)

   

    return 0;

}

运行结果:

a=0126, b=02713, c=07325603

a=86, b=1483, c=1944451

a=0x56, b=0x5cb, c=0x1dab83

a=0X56, b=0X5CB, c=0X1DAB83

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值