首页 C++系列4:位运算的巧妙运用
文章
取消

C++系列4:位运算的巧妙运用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Template = 1 << 0,

MainType = 0x0000FFFF,

Basic = 0x10000 << 0,

SubType = 0xFFFF0000,

TemplateBasic = Template | Basic,

#define GetMainType(type) (PropertyType)((int)type & (int)PropertyType::MainType)
同理可以定义GetSubType
GetMainType(TemplateBasic)的计算过程如下:

1. 总体是将 `TemplateBasic` 的值(即 `Template | Basic`)与 `PropertyType::MainType` 进行按位与运算。
2. `TemplateBasic` 的值为 `Template | Basic`,即 `0x00000001 | 0x00010000`,结果为 `0x00010001`。
3. `PropertyType::MainType` 的值为 `0x0000FFFF`。
4. 进行按位与运算:`0x00010001 & 0x0000FFFF`。
5. 最终的结果为 `0x00000001`,即 `PropertyType` 枚举中 `Template` 的值。

因此,`GetMainType(TemplateBasic)` 的计算结果为 `Template`。
本文由作者按照 CC BY 4.0 进行授权