这篇文章是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(逻辑右移) |