📜  检查第 k 位是否为 1 - C++ (1)

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

检查第 k 位是否为 1 - C++

在程序中,有时候需要检查一个二进制数的第 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

对于一个二进制数,我们可以使用左移运算符将第 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。