## C++ & 运算符### 简介在 C++ 中,'&' 运算符是一个功能丰富的符号,拥有地址获取和按位与两种主要用途。### 一、地址运算符 (&)1.
作用:
获取变量的内存地址。 2.
语法:
`&variable_name` - `variable_name` 是变量名。
示例:
```c++ int num = 10; int
ptr = # // ptr 存储 num 的地址cout << "num 的值为: " << num << endl; cout << "num 的地址为: " << &num << endl; cout << "ptr 指向的值为: " <<
ptr << endl; ```
说明:
- `
` 运算符在此处作为解引用运算符,用于访问指针指向的内存地址处的值。 - 地址通常以十六进制形式输出。### 二、按位与运算符 (&)1.
作用:
对两个操作数的对应位进行逻辑与运算。 2.
语法:
`operand1 & operand2`- `operand1` 和 `operand2` 可以是整数类型或枚举类型。
真值表:
| operand1 | operand2 | 结果 | |---|---|---| | 0 | 0 | 0 | | 0 | 1 | 0 | | 1 | 0 | 0 | | 1 | 1 | 1 |
示例:
```c++ int a = 10; // 二进制: 1010 int b = 6; // 二进制: 0110 int c = a & b; // 二进制: 0010, 十进制: 2cout << "a & b = " << c << endl; ```
常见用途:
-
检查位状态:
判断一个数的二进制表示中特定位是否为1。```c++bool isBitSet = (num & (1 << bitPosition)) != 0;``` -
设置位状态:
将一个数的二进制表示中特定位置为1。```c++num |= (1 << bitPosition);``` -
清除位状态:
将一个数的二进制表示中特定位置为0。```c++num &= ~(1 << bitPosition);``` -
提取子集:
从一个数的二进制表示中提取特定范围的位。```c++int subset = num & ((1 << endBit) - 1) >> startBit;``` -
判断奇偶性:
检查最低位是否为1。```c++bool isEven = (num & 1) == 0;```
注意:
- 按位与运算符 (`&`) 与逻辑与运算符 (`&&`) 不同。 - 在使用按位运算符时,请注意操作数的类型和范围。### 总结'&' 运算符在 C++ 中扮演着双重角色,既可以获取变量地址,又可以进行按位与运算。理解其不同用法对于编写高效且可读的 C++ 代码至关重要。
C++ & 运算符
简介在 C++ 中,'&' 运算符是一个功能丰富的符号,拥有地址获取和按位与两种主要用途。
一、地址运算符 (&)1. **作用:** 获取变量的内存地址。 2. **语法:** `&variable_name` - `variable_name` 是变量名。**示例:**```c++ int num = 10; int* ptr = # // ptr 存储 num 的地址cout << "num 的值为: " << num << endl; cout << "num 的地址为: " << &num << endl; cout << "ptr 指向的值为: " << *ptr << endl; ```**说明:**- `*` 运算符在此处作为解引用运算符,用于访问指针指向的内存地址处的值。 - 地址通常以十六进制形式输出。
二、按位与运算符 (&)1. **作用:** 对两个操作数的对应位进行逻辑与运算。 2. **语法:** `operand1 & operand2`- `operand1` 和 `operand2` 可以是整数类型或枚举类型。**真值表:**| operand1 | operand2 | 结果 | |---|---|---| | 0 | 0 | 0 | | 0 | 1 | 0 | | 1 | 0 | 0 | | 1 | 1 | 1 |**示例:**```c++ int a = 10; // 二进制: 1010 int b = 6; // 二进制: 0110 int c = a & b; // 二进制: 0010, 十进制: 2cout << "a & b = " << c << endl; ```**常见用途:**- **检查位状态:** 判断一个数的二进制表示中特定位是否为1。```c++bool isBitSet = (num & (1 << bitPosition)) != 0;``` - **设置位状态:** 将一个数的二进制表示中特定位置为1。```c++num |= (1 << bitPosition);``` - **清除位状态:** 将一个数的二进制表示中特定位置为0。```c++num &= ~(1 << bitPosition);``` - **提取子集:** 从一个数的二进制表示中提取特定范围的位。```c++int subset = num & ((1 << endBit) - 1) >> startBit;``` - **判断奇偶性:** 检查最低位是否为1。```c++bool isEven = (num & 1) == 0;```**注意:**- 按位与运算符 (`&`) 与逻辑与运算符 (`&&`) 不同。 - 在使用按位运算符时,请注意操作数的类型和范围。
总结'&' 运算符在 C++ 中扮演着双重角色,既可以获取变量地址,又可以进行按位与运算。理解其不同用法对于编写高效且可读的 C++ 代码至关重要。