嵌入式第二天

【vim进阶知识】

【复制】:在命令模式下进行

        yy + p          //yy表示复制,p表示粘贴

        Mp              //粘贴M份

        Nyy + Mp    //复制N行,粘贴M行

        shift + v      //选中某行,上下键配合选择多行,选中后按一下y即可随意多行复制  按下p粘贴

【删除】:

         dd          // 删除光标所在行

         Ndd      //删除光标所在行及其下面一共Nhang

【剪切】:

          Ndd + p    //删除粘贴搭配即可

【撤销】:

        u    // 撤销上一步操作

【反撤销】:        

        ctrl + r    //撤销上一步撤销操作

【C语言基础知识】

数据类型:
1什么叫数据类型?
-------- 数据的种类的划分 

2.C语言中数据类型 
  基本数据类型 :
    整型
    字符型 
    浮点型 
  构造数据类型 
  指针类型 
  空类型 

3. 数据类型 常量 vs 变量 
   常量  "在程序运行过程中", 不能改变的量
   变量  "在程序运行过程中", 能被改变的量

4. 整型 
   常量形式:
      123      //十进制的整型常量 
      0x123    //0x表示十六进制的整型常量 
      0123     //0表示八进制的整型常量

 进制:(进位的制度)
       逢几进1 (满几进1)
   
   十进制:
         0  1  2  3  4  5  6  7  8  9 
        10 11 12 13  ...           19
        20 ...     
   八进制:
         0  1  2  3  4  5  6  7  
        10 11 12 13  ...     17
        20 ...                 
        
   十六进制:                       // 10 11 12 13 14 15
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f 
        10 11 12 13  ...                             1f
        20 ...         
   
   二进制:
         0  1   
        10 11

 十进制 ===> 二进制 
     方法: 除2取余法(辗转相除法)
     
     2|123
       2|61      ... 1     (低位)
        2|30     ... 1 
         2|15    ... 0
          2|7    ... 1
           2|3   ... 1
            2|1  ... 1
             2|0 ... 1     (高位)
             
              111 1011(从下到上顺序写)
             0111 1011(四位四位往高位左边补齐0)

方法:
        加权求和 
           
   64    32  16  8   4   2  1
                    ...       2^1 2^0
    1     1     1   1   0   1   1  
   

二进制 => 八进制 
    0      1       2     3      4     5     6     7  
  000  001  010  011 100  101 110 111
    对应关系:
       1位八进制数 对应 3位 二进制数 
       
二进制 => 十六进制 
    对应关系:
       1位十六进制进制数 对应 4位 二进制数        
 
    8 4 2 1  //8 4 2 1(四位四位看,口诀简便计算)
    1 1 1 1 

0xb109===》1011 1010 1001

 1011  1010   1001

   b       10         9

整型变量:
     语法 
     定义变量
     
     数据类型 变量名; 
     
   整型:  unsigned / signed
     int <=> signed int           
     short 
     long  
     long long   
     

变量名:
       是一个名字 --- 标识符 
    怎么起名字?(重点)
    1.数字、字母、下划线组成
    2.开头不能是数字 
    3.不能与关键字重名 
    4.不要和预处理命令 及 库函数名重名 
    
    eg:
    int a_1;
    int 1_a; //这个名字不合法 

5. 数据类型的大小 
   表示的是该数据类型 所占内存空间的字节数 
   
   int                4字节
   short            2字节
   long             8字节
   long long     8字节 
   

sizeof(运算数) 计算运算数所代表的数据类型占用的内存空间的字节数 (注意是字节数不是比特数)
         运算数 可以是一个类型名
                 sizeof(int)
         可以是变两名 
                 sizeof(a) 
         可以是个常量或表达式
                sizeof(10)
                sizeof(a+10) 

6. 变量给值 
  int a = 10; //定义的同时给值 初始化 

  int a;   a = 10; //赋值 
  
  变量之所以能变 --- 变量实际上对应是一块可以被修改的空间,强调是空间。
  
  小端 高高低低 
       高位数据 存在 高地址(地址编号大) 处 
       低位数据 存在 低地址 处      
       0x12345678    


常见设备:  

x86 体系结构   --- 小端模式 
  51 单片机      ----大端模式

7. 整型数据的存储 
  小端存储 
  int a = 123; //00 00 00 7B

数据在计算机中如何存储?

计算机最终存储都是他们的补码形式

整数分 ---正数165、负数-165

正数---原码 反码 补码都一样

负数---补码=反码+1

如123 
    0111 1011 //原码
    0111 1011 //反码 
    0111 1011 //补码    

-7  //负数第一位作为符号位 ,0正1负,后面是数值位  
  1|000 0000 0000 0000 0000 0000  0000 0111 //原码 
  1|111 1111 1111 1111 1111 1111  1111 1000 //反码 
  1|111 1111 1111 1111 1111 1111  1111 1001 //补码
      f       f        f       f        f       f        f       9  ---十六进制


  负数的反码 是 原码 的符号位不变 其余位按位取反 

练习:
       -6735    //int 
       
    1|000 0000 0000 0000 0001 1010 0100 1111//原码
    1|111 1111 1111 1111 1110 0101 1011 0000//反码 
    1|111 1111 1111 1111 1110 0101 1011 0001//补码
        f       f       f        f       e      5        b      1    

6. 整型类型取值范围 
   int         4字节     
               unsigned int   0~2^32-1
               signed int       -2^31 ~ 2^31- 1
   short       2字节   
               unsigned short    0~2^16-1 //65535
               signed short        -32768 ~ 32767 
   long            8字节
   long long    8字节 

7.溢出

 1111 1111 1111 1111
+                   1
1 0000 0000 0000 0000   //溢出 


1|111  1111  1111  1110//补码
1|000 0000 0000 0010 //原码  -2

浮点型

关键字:

float //单精度    double//双精度   long double

4个字节             8个字节                16个字节

浮点数存储:

将十进制形式的小数,写成二进制小数

整数----除2取余法

小数---乘2取余法

 12 --- 1100
   
     0.125 * 2 = 0.25 --- 0
     0.25  * 2 = 0.5  --- 0
     0.5   * 2 = 1    --- 1
     0.001 


  1位 符号位  | 8位 充当 指数位   | 23位 尾数位
                      
             0         3 + 127(偏移量)     100001
  0100 0001 0100 0010 0000 0000 0000 0000   // 12.125 存到计算机中的样子 
     4       1       4        2       0      0        0      0   --------十六进制

浮点的比较 
  
  代码中出现的 变量 或 常量 一定有其对应的数据类型
  
  代码中出现的 浮点型常量 默认识别为 double 类型 

 float 
  1位 符号位|8位 指数位  |23位 尾数位 
                       +127
  double 
  1位 符号位|11位 指数位 |52位 尾数位
                       +1023 

浮点数的比较:
      保证精度一致 
      类型一致
      
  常量也可以指定类型:
  0.9f //表示被识别为 float类型 
  123 //默认识别为 int类型 
  123L //识别为long类型 
  123LU //unsigned long 
  123LL //long long 
  123LLU //unsigned long long 
  
  

【字符型】
  符号 --- 放到计算机中 
           01010 
           
  'a' --编码--- 0101010 
       ASCII 
       
  'a' --计算机中保存实际上是这个符号 对应 ascii的编码值 
  
  0~32 控制字符(不可见字符) 
  48~57 数字字符 '0' ~ '9'
  65~90 英文的26个大写 字母的符号 
  97~122 英文的26个小写 字母的符号 

 
1.字符型常量 
  'a'  //字符常量 a这个常量 

2.字符型变量 
  char  
  
  char ch; //一个字节 
  
  char ch = 'a';  
       
       ch这个变量中 最终放的放的实际上是 'a' 对应的ascii码 值  (整型)
       
  char  //tiny int --小整型 
  
  char 也一种整型类型 说char和整型之间是通用的 
  
  unsigned char ch;   //[0    ~ 255]
  signed char a = 10; //[-128 ~ 127]
  a = -10;  
 
3.字符型 大小 
  一个字节 
  
4. 应用 

  0~32 控制字符(不可见字符) 
  48~57 数字字符 '0' ~ '9'
     
  65 ~90  英文的26个大写 字母的符号 
  97 ~122 英文的26个小写 字母的符号 

  
  char ch = '1';
  
  printf("%d\n",ch - 48); //数值1  
  printf("%d\n",ch - '0'); //数值1 
  
  大写 转 小写  +32 

     练习1:
      编写程序完成在终端打印:
          *
         ***
        *****
         ***
          *


练习2:
 请编译程序将“China ”译成密码,用原来字母后面的第4个字母代替原来的字母。
 例如:
 字母A后面的第四个字母是E,用E代替A。
 因此"China"应译为"Glmre"。
 请编一道程序,
 用赋初值的方法使c1,c2,c3,c4,c5这5个变量分别为'C','h','i','n','a',
 经过运算,
 使c1,c2,c3,c4,c5分别为'G','l','m','r','e',然后输出。

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值