嵌入式系统定义:
“专用计算机系统” 需求不断变化 更新迭代
计算机技术:
硬件:
CPU(运算器+控制器)
存储器
内存
硬盘
输入
输出
软件:
操作系统
文件管理
进程管理
存储管理
网络管理
CPU管理
软硬件可裁剪:根据需求裁剪或增强某项功能。
vim进阶命令:
复制: Myy //复制光标所在行开始M行内容
粘贴: Np //粘贴在光标下N行
行选中: shift+v //按一下y复制 p粘贴
块选中: ctrl+v //块选中功能
删除: Ndd //配合p可剪切
撤销: u
恢复: ctrl+r
编程就是用计算机语言告诉计算机人类要解决的问题
不同类型的数据 --- 机器指令不同 --- 最终使用硬件不同
基本数据类型:
整型
浮点型
字符型
常量
变量
“在程序运行过程中,其值不能改变的量叫常量”
“在程序运行过程中,其值可以改变的量叫变量”
整型:
常量形式:
123 //十进制
0x123 //十六进制
0123 //八进制
进制:
进位的制度
逢几进一
十进制:
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 ... 19
20 21 ... 29
十六进制:
0 1 2 3 4 5 6 7 8 9 a b c d e f
10 ... 1a 1b 1c ...
八进制:
0 1 2 3 4 5 6 7
10 11 12 13 ...
二进制:
0 1
10 11
十进制 转 二进制
除二取余法
二进制 转 十进制
加权求和法
十六进制 转 二进制
1位十六进制数 对应 4位二进制数
0000 0
0111 1011
7 b
八进制 转 二进制
1位八进制数 对应 3位二进制数
001 111 011
1 7 3
变量形式:描述一个变量
语法:
数据类型 变量名;
整型:
int eg: int x 最大取值: 2^32-1
short eg: short y 65535
long eg: long z
long long eg: long long t
signed / unsigned //有无符号
变量名起名:标识符
1.数字、字母、下划线
2.数字不能开头
3.区分大小写
4.不能与关键字重名
5.不要与系统的二级关键词重名
6.不能与库函数重名
int a = 10; //初始化 开空间的同时给了值
int a;
a = 10; //赋值 先开空间 后给值
高地址 低地址
大端模式:
小端模式:高位数据放于高地址处 低位数据放于低地址处 “高高低低”
数据最高位 充当符号位
0 正
1 负
符号位 |--数值位
0 |000 0000 0000 0000 0000 0000 0111 1011
1 |000 0000 0000 0000 0000 0000 0111 1011
补码:
原码
反码:符号位不变 其余位按位取反
补码:反码+1
有符号数:有一位代表符号位,既可为正数又可为负数
无符号数:不包含符号位 包含非负数
结论:
整数 计算机中存的都是补码
正数:原码 反码 补码 都相同
负数:补码=反码+1 反码 为 原码 按位取反 符号位不变
练习: 5678 -5678
特殊数据: 1000 0000 0000 0000 0000 0000 0000 0000 0000 符号位充当数值位
nsigned short [0~2^16-1]//65536-1
signed short[-2^15~2^15-1]//-32768~32767
练习:求 5678和-5678的反补码
整型的溢出:
1111 1111 1111 1111
+ 1
-------------------------
1 0000 0000 0000 0000
数据范围的向上溢出
unsigned short i = 0 ;
i = i - 1 ;
i = 65535 ;
数据范围的向下溢出
总结:
1.常量形式
2.变量形式
gnu 组织 -- 标准C的基础上做了一些扩展
gcc
3.数据类型
a.数据存储
字节序(大端、小端)
数据存储(补码形式)
b.数据类型大小
c.考点
整型的溢出
-------------------------------
浮点型:
1.常量形式
1.234
1.2e3 //科学计数法
1.2E3 //指数可以为正数或负数 但必须为整数(不为小数)
2.变量形式
float //单精度 4字节
double //双精度 8字节
3.数据类型
存储
6.25
将小数转换为二进制形式的小数
整数部分:(除二取余法)
小数部分:(乘二取整法)
0.25 * 2 = 0.5 ----- 0
0.5 * 2 = 1 ----- 1
组合: 0110.01
将二进制形式的小数,写成科学计数法形式
1234.56 --> 1.23456*10^3
110.01 --> 1.1001*2^2
按照IEEE 754 标准存放
符号位|8位 指数位(阶码)+127|尾数位
| 2 + 127 |
| -127 ~ 128 |
1位 8位 23位
float 大小 4 字节 (32位)
符号位| 11位 指数位 |尾数位
1位 11位 52位
double 大小 8 字节 (64位)
指数位决定数据取值范围,尾数位决定取值精度。
浮点数的比较问题
精度问题
统一精度
浮点常量的类型:
默认识别为double类型
0.9f//表示识别为float类型
0.9L//表示识别为long double类型
整型常量:
123L//表示识别为long int类型
123LL//表示识别为long long类型
123UL//表示识别为unsigned long int类型
------------------------------------------------------------
字符型:
a b c
编码
ASCII
字符数据:
存入计算机
a ---> 编码值(数值) ---> 无符号的整数
常量形式:
'a' //字符常量
变量:
char ch; //tiny int
unsigned char [0~2^8-1]//255
signed char [-128~127]
ascii表:
man ascii //查看ascii表
0~32 //控制字符 不可见字符
'0'~'9' //48~57
'A'~'Z' //65~90
'a'~'z' //97~122
大小写转换:数值+-32