学习时间表
| 阶段 | 学习时间 | 上午学习时间 | 下午学习时间 | 晚上复习时间 | 结束时间 |
|---|---|---|---|---|---|
| 第一阶段/C语言 | 104小时 | 8:00 - 12:00 | 13:00 - 17:00 | 18:00 - 10:00 | 5月16日 |
| 第二阶段/STM32 | 26小时 | 8:00 - 11:00 | 12:00 - 15:00 | 16:00 - 18:00 | 5月20日 |
| 第三阶段/project | 5小时 | 8:00 - 10:00 | 11:00 - 13:00 | 14:00 - 15:00 | 5月21日 |
| 第四阶段 | 5月31日 |
5月8日学习内容
c语言特点
- 基础性语言
- 语言简洁 紧凑 方便 灵活
- 运算符 数据结构丰富
- 结构性 模块化编程
- 移植性号 执行效率高
- 允许直接对硬件操作
C源文件执行
- hello.c
- 源文件
- 预处理
- 编译
- 汇编
- 链接
- 可执行文件
数据类型 基本数据类型
- 数据类型所占字节数随(机器硬件不同而不同)
- 2进制格式最典型的计算方式 除2取余 倒序排列
- 如果是8进制 16进制 靠除8 16 取余倒序排列 10进制演变其他进制
8421法
转换8进制 3位一组
将2进制数每一组分组后 从最低位开始 不足三位的在高位补0 例如
(11111110)2 = (011)(111)(110)8
分别将每组三位的2进制数转换成8进制数 可以使用如下方法
取每组三位二进制数的最高位 (左边的位) 乘以 2^2=4
取每组三位二进制数的中间位 乘以2^1=2
取每组三位二进制的最低为 (右边的位)乘以2^0=1
然后将三个乘积相加 得到八位进制数
以第一组(011)2为例
- 最高位 0 乘以4 得到0
- 中间位 1 乘以2 得到 2
- 最低位 1 乘以1 得到 1
- 三组乘积相加 0 + 2 + 1 第一组对应八进制位数 = 3
16进制 8421法则
- 8进制到16进制就是两位一组
- 16进制中表示11 12 13 14 15 分别用A-F表示
- A = 10
- B = 11
- C = 12
- D = 13
- E = 14
- F = 15
C语言中不能赋值成2进制?
- 转换成8进制 10进制 16进制
数据类型 / 基本数据类型
chinese english 字节数 概述 整型 int 4字节(32位) 表示整数 浮点型 float 4字节(32位) 表示实数 包括单精度浮点数 浮点数用于表示带小数点的数值 浮点型 double 8字节(64位) 同float 字符型 char 1字节(8位) 用于表示单个字符 布尔型 bool 1字节(8位) 用于表示布尔值
常量/分类
常量:在程序执行过程中值不会发生变化的量
分类:整数常量 实例常量 字符常量 字符串常量 标识常量
- 整数常量:1,780,76,520
- 实例常量:3.14,5.26,1.999
- 字符常量:由单引号引起来的单个的字符或转义字符 '\015' '\x7f'
- 字符串常量:由双引号引起来的一个或者多个字符组成的序列
声明变量
- [存储类型] 数据类型 标识符 = 值
- TYPE NAME = VALUE;
标识常量 / 宏定义
- 是一种预处理指令 用于为一个值或者表达式创建一个简单易记的别名
// 格式如下 #define 标识符(别名名称) 常量值(可以是数字 字符 字符串等常量) #define PI 3.14159
数据类型/存储类型
- auto / 默认 自动分配空间 自动回收空间
- static / 静态型 自动初始化为0或空值 并值其变量的值有继承性 / 补充:常用于修饰变量或者函数
- register / 寄存器类型 只能定义局部变量 不可定义全局变量 大小有限制 只能定义32位大小的数据类型 如double不可以
- extern(说明型)/ 意味着不能改变被说明的变量的值
- 局部变量默认为auto型
- register型变量个数受限 且不能为long double float型
- 局部static变量具有全局寿命和局部可见性
- 局部static变量具有可继承性
- extern不是变量定义 可扩展外部变量作用域
运算符和表达式
加分号就叫语句 不加就叫表达式
i++ / ++i
- 运算符在前 先进行计算 在取变量值使用
- 变量在前 先取变量值使用 在进行计算
int i = 1; i++; 表达式值为1 i值为2 ++i; 表达式值为2 i值为2
输入输出专题
input & output / I/O(标准IO 文件IO)
格式化输入输出函数 scanf printf
字符输入输出函数:getchar putchar
字符串输入输出函数:gets(!) puts
printf 函数用于输出集格式化的字符到 控制台 可以输出各种类型的数据 如字符串 整数 浮点数
printf("format-string", argument-list); // 其中 `format-string` 是格式化字符串 它包含普通字符串和转换说明符 用来指定输出格式 `argument-list`是一个或多个要输出数据和列表
常用转换说明符
%d十进制整数 int a = 567 printf("%d", a) 567%u不带符号的十进制整数 int a = 567 printf("%u", a) 567%f输出浮点数 float a = 567 printf("%f", a) 567.78900%c输出字符 char a = 65 printf("%c", a) A%s输出字符串 printf("%s", "ABC") ABC\n就是换行符
进制转换
- 数字转换2进制 除2取余 倒叙排列
- 2进制转换8进制 3位一组 高位地位 2^2/2^1/2^0 乘积相加
- 8进制转换16进制 两位一组
- 2进制转换10进制 / 权值展开法 1248法
进制 转换形式 转换技巧 数值转换 转换2进制 除2取余 / 倒叙取余 2进制转换8进制 3位一组 高位补0 从左到右 高位相乘 / 2^2 2^1 2^0 乘积相加 8进制转换10进制 每一位的权值都是8的幂次方,从右往左数,第一位的权值为8^0,第二位的权值为8^1,第三位的权值为8^2,以此类推。因此,八进制数76展开式中的第一项为7×8^1。 89 8*8^1+9 * 8^0 73 2进制转换10进制 权值展开法/1248 从左开始 高位相乘 / 2^0 2^1 2^2 2^3 高位每一项和次方高项相乘 10进制转换2进制 不断除以2 倒叙排列 10进制转换8进制 除以8得到商和余数 余数记录下来 倒序排列 八进制转换16进制 376位数转换为2进制3位一组 然后四位一组 从右往左 高位补0 然后8421法则 1110 1111 1 * 2^3+1 * 2^2+1 * 2^1+1 16进制转换为2进制 1B转换 B十进制就是11 0001 1011