(四)C语言之进制间转换

1、常用进制表现形式

二进制:以0b开头,一位二进制位只能存放0或1,C语言中无法直接输出二进制。

              例:0b0111 1011

八进制:以0开头,一位八进制位能存放0~7,输出占位符是%o。

              例:0173

十进制:一位十进制位能存放0~9,输出占位符是%hd、%hu、%d、%u、%ld、%lu、%f、%lf

              例:123

十六进制:以0x开头,一位十六进制位能存放0~9 a~f,输出占位符是%x。其中 a代表10,b代表11,c代表12,d代表13,e代表14,f代表15

              例:0x7B

int main()
{
    //数据在计算机中都是按二进制存储,以下仅是同一个数据的不同输出形式
    int data = 123;

    //八进制输出,#的作用是按照八进制格式输出
    printf("八进制输出:%#o\n",data);
    //十进制输出
    printf("十进制输出:%d\n",data);
    //十六进制输出,#的作用是按照十六进制格式输出
    printf("十六进制输出:%#x\n",data);

    return 0;
}

2、进制间的转换

2.1 十进制 转 二进制、八进制、十六进制(短除法)

 例1:123的二进制表达形式为0b0111 1011

 例2:123的八进制表达形式0173

 例3:123的十六进制表达形式0x7B

 2.2 二进制、八进制、十六进制 转 十进制(位次幂)

 例1:二进制数0b0111 1011的十进制数为123

0*2^7+1*2^6+1*2^5+1*2^4+1*2^3+0*2^2+1*2^1+1*2^0=123

例2:八进制数0173的十进制数为123

1*8^2+7*8^1+3*8^0=123

例3:十六进制0x7B的十进制数为123

7+16^1+11*16^0=123

2.3 二进制 转 八进制

八进制数据范围是 0~7 ,转换成二进制就是 000~111

从右往左,每3位二进制位可以转换成一位八进制位。

二进制的每一位从低到高所代表的数是8 4 2 1

例:二进制数0b0100 0011

        拆分:01 000 011

        八进制:1 0 3

       二进制0b0100 0011的八进制是0103

2.4 八进制 转 二进制

每1位八进制对应3位二进制

二进制的每一位从低到高所代表的数是8 4 2 1

例:八进制        0123

        转二进制  001 010 011

        位数为8的倍数 0101 0011

        八进制0123的二进制数是0b0101 0011

2.5 二进制 转 十六进制

十六进制数据范围是 0~9 a~f ,转换成二进制就是 0000~1111

从右往左,每4位二进制位可以转换成一位十六进制位。

二进制的每一位从低到高所代表的数是8 4 2 1

例:二进制数0b0101 1101

       十六进制  5  D

        二进制0b0101 1101转为十六进制数为0x5D

2.6 十六进制 转 二进制

每1位十六进制对应4位二进制

二进制的每一位从低到高所代表的数是8 4 2 1

例:十六进制        0x9C

        转二进制 1001 1100

        十六进制数0x9C的二进制数是0b1001 1100

2.7 八进制 转 十六进制

八进制---->二进制---->十六进制

2.8 十六进制 转 八进制

十六进制---->二进制---->八进制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值