📅  最后修改于: 2023-12-03 15:26:49.008000             🧑  作者: Mango
在程序中,有时候需要检查一个二进制数的第 k 位是否为1。在C++中,我们可以使用位运算符进行操作。
左移运算符是 "<<",左移 k 位相当于将该数的二进制表示中的所有位都向左移动 k 位,右边用0补齐。
例如:
int a = 10; // 二进制表示为 1010
cout << (a << 1) << endl; // a 左移 1 位,结果为 20。二进制表示为 10100
位与运算符是 "&",按位与运算可以将两个二进制数中的每一位进行与操作,如果都为1,则结果为1,否则为0。
例如:
int a = 10; // 二进制表示为 1010
int b = 3; // 二进制表示为 0011
cout << (a & b) << endl; // 二进制表示为 0010,结果为2
对于一个二进制数,我们可以使用左移运算符将第 k 位变成1。然后将原数与该左移后的数进行按位与操作,如果结果为0,则表示原数的第 k 位为0,否则为1。
例如:
int a = 10; // 二进制表示为 1010
int k = 2; // 检查第2位是否为1
if (a & (1 << k)) {
cout << "第" << k << "位为1" << endl;
} else {
cout << "第" << k << "位为0" << endl;
}
输出结果为:
第2位为1
以上就是在C++中检查二进制数的第 k 位是否为1的方法。我们可以使用左移运算符将第 k 位变成1,然后将原数与该左移后的数进行按位与操作,如果结果为0,则表示原数的第 k 位为0,否则为1。