嵌入式开发-【1】C程序学习-1.2 :C语言基础学习

目录

1进制转换

1.1一点小废话

1.2各类进制介绍

1.3进制之间转换

1.3.1 二进制转换

1.3.2八进制转换

1.3.3十进制转换

1.3.4十六进制转换

1.4 ASCII码介绍

2.词法符号

2.1关键字

2.1.1 存储类型

2.1.2 数据类型

2.1.3 构造类型

2.1.4 选择结构

2.1.5 循环结构

2.1.6 其他

2.2标识符

2.2.1 用途

2.2.2 命名规则

2.3运算符

2.3.1 算术运算符

2.3.2 逻辑运算符

2.3.3 关系运算符

2.3.4 位运算符

2.3.5 赋值运算符

2.3.6 三目运算符

2.3.7 运算符优先级

2.4标点符号

2.5分隔符

3 变量

3.1 定义格式

3.2 数据类型

3.3 全局变量和局部变量

4 常量

4.1 字符型常量

4.2 字符串常量        

4.3 整型常量

4.4 浮点型常量

4.5 指数常量

4.6 标识常量

5 输入输出

5.1 按字符输入输出

5.1.1 按字符输入getchar( )

5.1.2 按字符输出putchar( )

5.2 按格式输入输出

5.2.1 按格式输入scanf( )

5.2.2 按格式输出printf( )

5.3 垃圾字符回收

5.3.1 空格

5.3.2  %*c

5.3.3  getchar()


1进制转换

1.1一点小废话

       欢迎大家来到C语言第一课!今天介绍的是关于进制之间的转换,要学好C语言甚至后期的开发,首先需要明白我们要怎么和机器进行交流,就像与人与人之间的交流相同,但是不同地区交流的方式都不一定相同,山东人可能用山东话,东北人可能用东北话,虽然能听懂,但是总有一些“扑棱盖儿卡秃噜皮” “夜来轰上” 这种方言让其他地区的伙伴听不懂,这就好比C语言与C++的区别,代码我能看懂,但是咋有些关键字词我就是不明白呢?不管你明不明白,无论是C语言还是C++等,机器它都不明白!所以,程序语言在机器中到底是怎么运行的,我们写的程序都怎么让机器识别的,作者就从这一方面开始说起。

1.2各类进制介绍

      废话不多讲,能来这个高端论坛的肯定都知道,机器是通过二进制来识别代码的。我们目前的语言,无论是C、C#、C++,还是Java、Python,都需要经过一定的编译处理为机器识别的二进制。目前主要分为二进制、八进制、十进制和十六进制四类主要进制。

     二进制:英文为Binary,简写B。即0和1,特点为逢二进一,例如00、01、10、11 。无论是笔记本电脑还是32及51单片机中,都是通过二进制序列控制其实现某种功能的。

     十进制:英文为Decimal,简写为D。即0-9,特点为逢十进一,主要是方便工程师通过自己熟悉的数字及指令来进行仪器操作。在程序中,经常通过格式字符“%d”或“%i”来输出十进制整数。以下是将八进制15与十六进制1f输出为十进制数: 结果为a=13,b=21 。

#include <stdio.h>
int main(int argc, char const *argv[])
{
   int a = 015 ;
   int b = 0x1f ;
   printf("%d\n",a);
   printf("%i\n",b);
}
 

13
21

     八进制:英文为 Octal,简写为O。即0-7,特点为逢八进一,即0,1,2,3,4,5,6,7,10,11,12.......(此处不可以读十一/十二,而是一一、一二。)因为八进制的数和二进制数可以按位对应(八进制一位对应二进制三位),因此经常常应用在计算机语言中。在程序中,经常通过格式字符“%o”来输出十进制整数,因为要区别八进制与十进制显示的区别,所以一般输出八进制整数时前边加“0”,这是格式字符为“%#o” ,如下图:  

#include <stdio.h>
int main(int argc, char const *argv[])
{
   int a = 15 ;
   printf("%o\n",a);
   printf("%#o\n",a);
}

17
017

    十六进制:英文为Hexadecimal,简写为H,或者hex。特点为逢十六进一,即0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f 。十六进制一位对应二级制四位,所以也常用于计算机语言中。在程序中,经常通过格式字符“%x”来输出十六进制整数,与八进制相同,十六进制也是有前缀的,前缀为“0x”,可以通过“%#x”来实现,如下图:

#include <stdio.h>
int main(int argc, char const *argv[])
{
   int a = 15 ;
   printf("%x\n",a);
   printf("%#x\n",a);
}


f
0xf

各进制之间关系如下图所示:

十进制

二进制

八进制

十六进制

十进制

二进制

八进制

十六进制

0

0000

0

0

8

1000

10

8

1

0001

1

1

9

1001

11

9

2

0010

2

2

10

1010

12

a

3

0011

3

3

11

1011

13

b

4

0100

4

4

12

1100

14

c

5

0101

5

5

13

1101

15

d

6

0110

6

6

14

1110

16

e

7

0111

7

7

15

1111

17

f

1.3进制之间转换

1.3.1 二进制转换

二进制转为十进制:

       二进制转十进制通常使用对每一位的2的权重次幂累加进行计算,公式为

 A为各位次的值(0或者1),t为各位权 。例如二进制10110101转换为十进制如下图:

二进制转为八进制:

       因为2^3=8,所以二进制的三位可以作为八进制的一位,通常是从低位开始,二进制三位一组变一位八进制(也就是我们说的421码),最高位不足三位前方补0:

421码
二进制 八进制 二进制 八进制
000 0 100 4
001    1 101 5
010 2 110 6
011 3 111 7

       例如二进制10101100,三个分为一组,不够位数的最高位前方补0,就会得到010 101 100 ,把每三位二进制变为八进制为2 5 4 ,所以10101100变为八进制为0254 。

二进制转为十六进制:

       基本原理与二进制转八进制相同,不过此时应该将二进制的四位一组,不够四位的在最高位前方补0 (一般使用8421BCD码)。例如10101100 ,四位一组变为1010 1100 把每四位二进制转变为一位十六进制得到a c,所以10101100变为十六进制为0xac 。

8421BCD码
二进制
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值