**************************************************************************************************************************************************************************************************************************
嵌入式技术是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统技术。
计算机技术:
硬件:CPU(运算器+控制器);存储器;内存硬盘;输入,输出
软件:操作系统:文件管理;进程管理;存储管理;网络管理;CPU管理
通过实现的功能的需求进行软件硬件的裁剪,突出所需要的功能(软硬件裁剪的目的)
**************************************************************************************************************************************************************************************************************************
在命令模式下:Nyy -- 复制n行(光标所在位置为准 )
Np -- 粘贴N份(光标所在的下一行)
dd--删除(光标这一行) ; dd+p--剪贴
ctrl+v--复制块 ; shift+v--复制行 --------- 此时选中后y为复制,d为删除,d+p为剪贴
注意:ctrl+v--复制块可以复制任意的方向键选择内容,从程序任意地方插入。
u--撤销(几下u可以撤销多少次) ; ctrl+r--反撤销
进入底层代码可以用 q!强制退出
:/ + 字符串 --- 在vi里找到相应的字符串
**************************************************************************************************************************************************************************************************************************
整型(1),浮点型(1.0),字符型(a)
注意:signed/unsingned 有负号/无负号
整型:( int(4字节) ; short (2字节) ; long(8字节) ; long long )---- signed/unsingned 使其变为8种类型
注意:值+s/L/LL/UL(unsingned long)...... ---------后缀加缩写指定类型
常量形式(值不能被改变的量):
123 //十进制 ------------- 输出格式 为 %d
0x123 //十六进制 ------------- 输出格式 为 %x
0123 //八进制 ------------- 输出格式 为 %o
注意:十进制转二进制 除二取余 下高上低(从下往上写,四位隔开) 十六进制 <=> 二进制:1位十六进制数 对应 4位 二进制数(加权求和,四位对应一位) 八进制 <=> 二进制 :1位八进制数 对应 3位 二进制数(加权求和,四位对应一位)
一个字节8位 eg:0101 为 四位(以字节为最小单位,无小数字节)
变量形式(值能被改变的量):指定(描述)一个变量
注意:数字,字母,下划线 ; 数字不是开头 ; 区分大小写 ; 不能与关键字重名 ; 不要和系统二级关键词重名 (比如include 预处理的命令) ; 不能与库函数重名
eg : int a = 10 ---- -- 初始化 开空间的同时给了值 ; int a --------先开空间 后给值 ; a = 10------------赋值
存储: 注意:计算机存的都是补码
int a=0x12345678 ------ 十六进制一位对应四位二进制,则占有8x4=32位,即为4字节
实际上计算机存放的是补码。正数的 ,原 , 反, 补 码是一样的 ; 负数的反码就是原码的反数,补码=反码+1
补码理解:7是5的补码 , 算数丢掉模 , 也就是12 (符号位 既充当符号位 又 充当数值位 )
eg:
-5678 ; 1000 0000 0000 0000 0001 0110 0010 1110//原码
1111 1111 1111 1111 1110 1001 1101 0001//反码
1111 1111 1111 1111 1110 1001 1101 0010//补码
f f f f e 9 d 2 //16进制
注意: 16进制的形式是为了便于观察,实际上计算机存放的二进制
关于整形的溢出(时钟法理解上/下溢出):
1.unsigned int [0~2^32 - 1] 2,147,483,648=2^32 (无符号,正数的 ,原 , 反, 补 码是一样的) ------ 最小值为0(所有位里都存为0 ) ; 最大值为2^32 - 1(所有位里都存1 , 32位 ,则值为2^32 - 1,减1是因为+1使其运算简单,所以后面要剪掉 eg:1111 1111 1111 1111 1111 1111 1111 1111 //(最大值+1 ------ 1 0000 0000 0000 0000 0000 0000 0000 0000 -------- 2^32 - 1 (42亿多 )
2.signed int [-2^31 ~ +2^31-1](有符号,考虑补码)-------最大值为2^31-1(补码所有位里为0,但是有符号,所以补码要转原码,若符号为正 ,则补码“逆运算”,得出反码(都为1),反码-1得出原码转换十进制2^31-1) ; 最小值为-2^31(若是符号为负值,在负数中最大值的算法为,补码所有位里都为1,补码逆运算-1,得出反码(末尾为0),得出原码(末尾为1)转换十进制-1 ; 最小值的算法为,补码里都为0,逆运算-1 得出反码(都为1),符号位 既充当符号位 又 充当数值位,则原码的数值 (1|都为0),转化十进制为-2^31)。
3.unsigned short [0~2^16-1] 2^16-1= 65536-1(short为2字节 18位)
4.signed short [-2^15 ~ +2^15-1]
float---4字节 double---8字节 long double---16字节() ---------- 变量形式
浮点型进制的转换 (乘二法) :小数位x2 , 取ce eg : 0.25 (x2)-----0.5(取0) -------0.5(x2)-------1(取1),则小数点后二进制为 01
常量形式
234
2e3 //科学计数法形式 //1.2*10^3
2E3 //e后面 可以是正数 或 负数 不能是小数
存储 :
符号类型 (0正 1负) | (float指数位8位)指数+127(指数的大小为-128~127) | 尾数(小数点后的二级制) | (double指数位11位)指数+1023 |
eg -12.25 : 第一步:1100.01(转化为二进制) 第二步: 1.10001x2^3(转化为指数形式) 第三步:1 | -3+127(1000 0010) | 1001(存储方式) 第四步:整理为四个字节--1100 0001 0100 0100 0000 0000 0000 0000(补后缀0)
注意 定义 float f=0.9 != 表达格式 f=0.9 (因为常量默认为double,位数会更多) 要表达 f=0.9f或者是 double f=0.9
a,b,c --------- 常量形式
变量形式
char ch ------- unsigned char [0~2^8-1] 2^8-1=255 ; signed char [-128~127]
ascii表:
0~32 控制字符 不可见
'0'~'9'-------48~57
'A'~'Z' -------65~90
'a'~'z' -------97~122
eg: '0' ----- 0 '0'-48=0
大小写转换
加减32(通过'A'~'Z'和'a'~'z'的比较)