嵌入式学习日志 2

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

嵌入式学习日志 2_第1张图片

整型的溢出:
    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

你可能感兴趣的:(学习)