这篇文章是C++语言学习总结,目的是掌握嵌入式。有什么不足之处希望大家能指出来,帮助完善这篇文章。
 学习网址:
- https://www.bilibili.com/video/BV1dW411v7VM?p=13
- https://www.bilibili.com/video/BV1iy4y1i7DT?from=search&seid=12734885497765107235&spm_id_from=333.337.0.0
- https://www.runoob.com/w3cnote/bit-operation.html
内容总结:
- 首先是了解2进制、10进制、16进制
| 2进制 | 10进制 | 16进制 | 
|---|---|---|
| 00000 | 0 | 0 | 
| 00001 | 1 | 1 | 
| 00010 | 2 | 2 | 
| 00011 | 3 | 3 | 
| 00100 | 4 | 4 | 
| 00101 | 5 | 5 | 
| 00110 | 6 | 6 | 
| 00111 | 7 | 7 | 
| 01000 | 8 | 8 | 
| 01001 | 9 | 9 | 
| 01010 | 10 | A | 
| 01011 | 11 | B | 
| 01100 | 12 | C | 
| 01101 | 13 | D | 
| 01110 | 14 | E | 
| 01111 | 15 | F | 
可以看出2进制是逢2进1,10进制是逢10进1,16进制是逢16进1
- 2进制转化16进制(重点)使用的是 8421码的方法:将2进制数分组,每四个一组,从右往左分,不够一组在前边加0
| 8位 | 7位 | 6位 | 5位 | 4位 | 3位 | 2位 | 1位 | |
|---|---|---|---|---|---|---|---|---|
| 8421码 | 8 | 4 | 2 | 1 | 8 | 4 | 2 | 1 | 
| 2进制位数 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 
计算方法: 
    
     
      
       
        8
       
       
        ×
       
       
        0
       
       
        +
       
       
        4
       
       
        ×
       
       
        0
       
       
        +
       
       
        2
       
       
        ×
       
       
        1
       
       
        +
       
       
        1
       
       
        ×
       
       
        0
       
       
        =
       
       
        2
       
      
      
       8\times0+4\times0+2\times1+1\times0=2
      
     
    8×0+4×0+2×1+1×0=2;
    
     
      
       
        8
       
       
        ×
       
       
        1
       
       
        +
       
       
        4
       
       
        ×
       
       
        0
       
       
        +
       
       
        2
       
       
        ×
       
       
        1
       
       
        +
       
       
        1
       
       
        ×
       
       
        0
       
       
        =
       
       
        A
       
      
      
       8\times1+4\times0+2\times1+1\times0=A
      
     
    8×1+4×0+2×1+1×0=A
 结果:0X2A
-  2进制、10进制、16进制的引用 - 2进制 `0B`;16进制`0X`;10进制直接写数字
-  然后是了解结构体,结构体相当于一个大的集合,与数组不同的是可以在里边添加许多种类的东西,先掌握其简单用法 
 定义结构体
 struct name{ int a; char b; float c; }x;//'name'是结构体的名字,'x'是变量
 写入数据
 x.a=1;x.b=2;x.c=0x2A;
 数据调用
 if(x.a==1) {z=x.b}
-  结构体不仅可以储存变量还可以用来定义变量 
 定义结构体
 typedef struct{ int a; char b; float c; }x//'name'可以省略
 写入数据
 x y;y.a=1;y.b=2;y.c=0x2A;
 数据调用
 if(y.a==1) {z=y.b}
 相当于把X的能力传给了Y,X本身不变,但是Y变了
-  位运算(重点是取反,左移,右移) 
 位运算是对二进制进行操作
| 符号 | 描述 | 运算规则 | 
|---|---|---|
| & | 与 | 两个位都为1时,结果才为1 | 
| | | 或 | 两个位都为0时,结果才为0 | 
| ^ | 异或 | 两个位相同为0,相异为1 | 
| ~ | 取反 | 0变1,1变0 | 
| << | 左移 | 各二进位全部左移若干位,高位丢弃,低位补0 | 
| >> | 右移 | 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移) | 










