嵌入式系统定义:
“专用计算机系统” 需求不断变化 更新迭代
计算机技术:
硬件:
?? ?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