📜  int x = 3 & 5 (1)

📅  最后修改于: 2023-12-03 15:15:50.905000             🧑  作者: Mango

C++ 中按位运算符"&"

在 C++ 中,按位运算符有"&"、"|"、"^"、"~"等等。其中"&"表示按位与,将两个操作数的每一位进行"与"操作,只有都为1时才得到1,否则得到0。

例如:

int a = 3 & 5;   // a = 1 (二进制 001)
int b = 3 | 5;   // b = 7 (二进制 111)
int c = 3 ^ 5;   // c = 6 (二进制 110)
int d = ~3;      // d = -4 (二进制 111...1100)
按位与"&"的作用

按位与"&"可以用来进行一些位运算上的处理,比如对于某个数n,判断它第k位是否为1。

可以用以下代码实现:

int n = 7;     // 二进制 111
int k = 2;
if(n & (1 << k)) {
    cout << "第" << k << "位为1" << endl;
} else {
    cout << "第" << k << "位为0" << endl;
}

上述代码中的"(1 << k)"表示将数字1左移k位,比如k=2时,它的值为4。进行按位与操作后,只有第k位为1时结果才会不为0。

"&"作为取地址符

在 C++ 中,"&"还有另一个作用,即取地址符。例如:

int x = 10;
int* p = &x;

上述代码中,"&"作为取地址符,将变量x的地址赋值给了指针变量p。

总结

"int x = 3 & 5;"中的"&"表示按位与操作,将3和5的二进制表示按位进行"与"操作,得到1,即x的值为1。

除了按位与操作,"&"还可以用于判断某个二进制位是否为1,以及取变量的地址。多了解按位运算符的用法,有助于更好的理解底层运算。