📅  最后修改于: 2023-12-03 15:15:50.905000             🧑  作者: Mango
在 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,以及取变量的地址。多了解按位运算符的用法,有助于更好的理解底层运算。