嵌入式学习 Day2

1.vim的常用编程指令

常用的一些指令及作用
yy复制光标所在行
dd删除光标所在行
p粘贴
myy复制光标所在行开始的往下m行 
np从光标所在行下一行开始粘贴n次
u撤销上一次操作
Ctrl + r反撤销
shift + :进入底行模式
i进入插入模式
w保存
q退出
wq保存并退出
wq!强制保存并退出
w!强制退出
Ctrl + v + 方向键块选中
Shift + v + 方向键行选中
(1)命令模式下

yy+p              //复制光标所在行 + 粘贴到光标所在行的下一行

5yy+p             // 复制光标所在行开始的往下5行 + 从光标所在行下一行开始粘贴

 2yy+3p              //复制光标所在行开始的往下2行 + 从光标所在行下一行开始粘贴3次

 shift + v  +方向键         //行选中,这往往不是行选中的目的,通常是为了再使用其他指令,如复                                           制,剪切等

ctl + v + 方向键              //块选中,这往往不是块选中的目的,通常是为了再使用其他指令,如复                                           制,剪切等

(2)底行模式下

 先底行模式下:10,14 y + 回车      //复制第10到第14行

再命令模式下:p         //从光标所在行下一行开始粘贴

同理10,14 d + 回车         //删除第10到第14行

2. 计算机基础知识

(1)计算机的组成


   硬件 :CPU(运算器+控制器)
               存储器 :内存 + 硬盘 
               输入设备:鼠标、键盘、麦克风 
               输出设备:屏幕 、扬声器、打印机


   软件 :  操作系统:a.文件管理 
                                b.进程管理
                                c.存储管理 
                                d.网络管理 
                                e.CPU管理 

(2)进制的转换

         进制即进位的制度,“逢几进一即为几进制”

  十进制

            十转二:除二取余,从下到上

            二转十:加权求和

                          用BCD码

            10进制转R进制:10对R 做短除法 ,商从高到低进行书写,就是对应的R进制数。

            R进制转10进制: 将该R进制的,每一位的上的数值乘上该位的位权,整体求和就是其对                                              应的十进制数。

  十六进制

            十六转二:1位 十六进制数对应 4位 二进制数

            二转十六:4位 二进制数对应 1位 十六进制数

            注意均结合BCD码(8421)

  八进制

            八转二:1位 八进制数对应 3位 二进制数

            二转八:3位 二进制数对应 1位 八进制数

            注意均结合BCD码(421)

  二进制

(3)数据类型

  初识数据类型 :新生儿的数量      整数 
                          身高体重             小数 
                          统计名字             字符数据 

  注意以下对于计算机而言这是两种不同类型的数据

  1+2       (整数型运算)

  1.0+2.0 (浮点型运算)

  不同类型的数据  --- 机器指令不同 --- 最终调用硬件的部件不同 (根据数据类型选择对应的运算      单元是为了更快的计算)


  基本数据类型 :整型 
                            浮点型 
                            字符型 


  常量与变量 : 在程序运行过程中,值不能被改变的量 --常量 
                                                          值能被改变的量     --变量 

  

  整型 : <1> 常量形式              
                    123     //十进制 
                    0x123   //十六进制 
                    0123    //八进制

            <2> 变量形式

            语法 : 数据类型  变量名

                    int         // 4个字节长度(一个字节代表8个二进制位)
                    short     // 2个字节长度
                    long      // 8个字节长度
                    long long // 8个字节长度

        

             eg:int a 

                     int a = 10;   //初始化(开辟文件名为a的内存空间,再放入值10)

               注意变量名起名规则
              1.数字,字母,下划线 
              2.数字不是开头 
              3.区分大小写 
              4.不能与关键字重名 
              5.不要和系统二级关键词重名  (include 预处理的命令)
              6.不能与库函数重名

             signed / unsigned     // 有符号数,无符号数

             有符号数,以数据最高位为符号位其余为数值位(正数或负数)

              符号位 | 数值位
              | 000 0000 0000 0000 0000 0000 0111 1011    // +123 
              | 000 0000 0000 0000 0000 0000 0111 1011    // -123 
              无符号数,所有位都为数值位(非负数)

           <3> 数据在内存中的存储形式

                  大端存储 
                  小端存储 : 高位数据 存储在 高地址处 (高高低低)
                                   低位数据 存储在 低地址处

                  ARM架构中通常既可大端存储,又可小端存储(可由开关决定)

                  Inter 体系下通常是小端存储

                  数据在内存中的存储形式,都是以其对应的二进制原码的补码形式存储在内存中

                  补码是为了用加代替减

                  正数的  原码  反码  补码 都是一样的

                  负数的  补码  = 反码+1


                   原码 
                   1|000 0000 0000 0000 0000 0000 0111 1011    //-123 
                   反码 
                   符号位不变,其余位按位取反 
                   1|111 1111 1111 1111 1111 1111 1000 0100      //-123 
                   补码  反码 + 1
                   1|111 1111 1111 1111 1111 1111 1000 0101      //-123 
                       f        f       f       f        f       f       8      5 

             练习:5678
                       -5678       


            0000 0000 0000  0000 0001 0110 0010 1110       // 5678(放在四字节空间,前面补零)
               0       0       0        0       1       6       2       e 
 
           1|000 0000 0000 0000 0001 0110 0010 1110       // -5678  
           1|111 1111 1111 1111 1110 1001 1101 0010          // -5678 补码 
               f        f       f        f      e       9       d       2  

        <4> 数据类型的大小

             由补码求原码:对补码再求一次补码(符号位不动,其余位取反再加一)

                                      求补码的逆过程(符号位不动,先减一再取反)

              unsigned int  [0~2^32-1]                                                                                                                    signed int      [-2^31 ~ +2^31-1]

              unsigned short   [0~2^16-1]              //65536-1 
              signed short       [-2^15 ~ +2^15-1]   //-32768 ~ 32768-1

        <5>整型的溢出

               向上溢出

              1111  1111  1111  1111 
                    +                         1
              ----------------------------
           1 0000 0000 0000 0000       // short i 所开辟的两个字节空间已被占满,再加 1 便只能向上                                                             溢出

              

观察到程序运行后数值一直循环,这是因为空间最大为65535,再自增1便向上溢出,自身清零了

              向下溢出

             0000 0000 0000 0000
                     -                        1
             -----------------------------
        1   1111  1111  1111  1111       // short i 所开辟的两个字节空间内值为0,要减 1 便只能向上                                                                借位,就向下溢出了

  浮点型:

       <1> 常量形式 
          1.234 
          1.2e3   //科学计数法形式  //1.2*10^3 
          1.2E3  //e后面 可以是正数 或 负数 不能是小数 

       <2> 变量形式 

              float        //单精度 (所谓精度,是以尾数位数来衡量的,后者为前者的两倍多)
              double    //双精度 

              float   4字节
              符号位|指数位|尾数位
                         |  8 位 | 23位  
                            +127    // 偏移量

              double  8字节  
              符号位|指数位|尾数位
                         |  11位 | 52位  
                         +1023

       <3>数据在内存中的存储形式
   eg : 6.5
   step1: 将小数 转换为 二进制形式的小数         
       整数部分: (除2取余法)       
       0110   
       小数部分:(乘2取整法)
       0.25 * 2 = 0.5  --- 0
       0.5  * 2 = 1    --- 1    
       组合:
       0110.01 
   step2:将二进制形式的小数,写成科学计数法形式           
      1234.56 ---> 1.23456*10^3 
      110.01   ---> 1.1001 * 2^2      //科学计数法形式 
 
   step3:按照 IEEE 754 标准存放  
      
    1位 符号位 | 8位 指数位 | 尾数位 
                         |  2 + 127 |
                        | -127~128 |
                0       1000 0001   1001 0000 0000 0000 0000    // 不够的后面补零
                 
           0100 0000 1100 1000 0000 0000 0000 0000    // 以四位为一组重新划分,不够的补零,补                                                                                           足32位
              4       0        c       8      0       0        0      0       // 写为16进制数形式,这只是为了方便显示                                                                                      存储情况,实际仍以上式二进制数形式存储  

   <4> 关于默认

         浮点常量的类型

         0.9默认识别为double类型 
         0.9f     //表示识别为 float类型 
         0.9L    //L表示long double

         整型常量的类型
 
        123L     //long int 
        123LL   //long long int 
        123UL  //unsigned long int 

 字符型:

      a b c
      t <--->0100101010
      a <--->0101010 
  
      字符数据存储到计算机  
      a ---> 编码值 (数值) ---> 无符号的整数 
      因此字符型可以认为是整型的一种,字符型数据和整型数据是通用的,本质都是整数

         <1> 常量形式:
                 'a'     // 字符常量 

         <2> 变量形式:


                char ch;   // tiny int (小整型)
 
                unsigned char  [0~2^8-1]          //255
                signed char      [-2^7~+2^7-1]   //-128~127-1
    
          <3> ASCII表:
              0~32 控制字符 不可见 
              '0'~'9'        //48~57
              'A'~'Z'       //65~90 
              'a'~'z'        //97~122 
              '0' ---> 0   //减 48 或 '0'
              大小写转换加减32 

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值