C基础-03(进制转换、字符常量)

(内容为学习笔记,如有错误,还望指正,如有遗漏,还望补充)

1.进制转换(重点)

基础

1)十进制: 逢十进一。 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

2)二进制: 逢二进一。 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 10000

3)八进制: 逢八进一。 00 01 02 03 04 05 06 07 010 011 012 013 014 015 016 017 020

4)十六进制:逢十六进一。 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20

在C语言中使用八进制和十六进制的常量需要使用前缀

八进制的前缀 0

十六进制的前缀 0x 0X

十进制格式: %d

八进制格式: %o    //带前缀输出八进制 %#o

十六进制格式:%x    //带前缀输出十六进制 %#x

#include<stdio.h>

int main(int argc,const char *argv[])
{
    int i = 17;          //定义i值为17(十进制下)
    printf("%d\n",i);    //输出十进制i,17
    printf("%o\n",i);    //输出八进制i,21
    printf("%x\n",i);    //输出十六进制i,11
    printf("%#o\n",i);   //输出带前缀八进制i,021
    printf("%#x\n",i);   //输出带前缀十六进制i,0x11
}

进制转换规则(重点,前三小转大,后三大转小)

1)二转十: 二进制每个位上的数,与其对应的权值相乘,再将对应的结果相加。得到的就是十进制的值 。

0110 1011 = 107   //即从右往左从0位开始,2的0次幂+2的1次幂+2的3次幂+2的5次幂+2的6次幂

2)二转八: 二进制的每三位数,对应转换成八进制的一位数

001 101 011 = 0153

3)二转十六:二进制的每四个数,对应转换成十六进制的一位数

0110 1011 = 0x6B

4)十转二:

a.将十进制数,对二取余数,再将本次的商作为被除数继续对二取余,直到商为0时为止。将得到的余数,从后向前依次读出,即为转换的二进制数。以117为例,如图所示结果为0111 0101。

b.当然如果你对于二进制比较敏感,熟悉1,2,4,8,16,32。。。等二进制固定位的数值,也可以反向推导,可以把一个十进制大数拆分成很多个小的十进制数,再求其对应的二进制数再相与。

117为例,将其拆分为64+32+16+4+1,即0100 00000010 00000001 00000000 01000000 0001,将他们相与,即得到0111 0101。

5)八转二: 八进制每位数,对应转换成二进制的三位数。

6)十六转二: 十六进制的每位数,对应转换为二进制的四位数。

2.字符常量简介

格式符%c、ascii码

常用的ascii码有

1)空格space---32

2)数字0---48

3)A---65

4)a---97      //大写的A和小写的a之间差值32

ascii码表如下(非自制)

小知识:

1)Linux系统中使用指令man ascii可以查看。

2)0,即'\0',和数字0,即'0',是不一样的,前者是编码0代表的字符NUL,后者是编码48代表的数字0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值