Skip to content

C++ 位运算符

C++ 中存在各种运算符。每个 Operator 都有一个特定的元件以及一个要执行的 Action。我们在 C++ 中有各种类别的运算符。

  1. 算术运算符
  2. 关系运算符
  3. 逻辑运算符
  4. 赋值运算符
  5. 按位运算符

在本文中,我们将了解 C++ 中的按位运算符。

C++ 位运算符

位运算符是用于对整数执行位级运算的运算符。执行此操作时,整数被视为二进制数字序列。在 C++ 中,我们有各种类型的按位运算符。

  1. 按位 AND (&)

  2. 按位 OR (|)

  3. 按位 XOR (^)

  4. 按位 NOT (~)

  5. 左移 (<<)

  6. 右移 (>>)

1. 按位 AND (&)

在两个整数之间执行按位 AND 运算,它将比较同一位置上的每个位,结果位将仅设置 (1) 并且仅当两个相应的位都设置为 (1) 时。用于执行按位 AND 运算的符号是 &。

示例:我们将在两个数字 7 和 4 之间执行按位运算。在二进制中,7 将表示为 111,4 将表示为 100。

C++
     1  1  1
&  1  0 0
    ------
     1  0 0

正如我们在上面的例子中看到的,只有那些位是 SET 位,其相应的位 (BOTH) 都被设置了。因此 7&4=4

2. 按位 OR (|)

如果在两个整数之间进行按位 OR 运算,则会比较同一位置上的每个位,如果设置了任何相应的位,则结果位将设置为 (1)。用于执行按位 OR 运算的符号是 |。

示例:我们将在两个数字 7 和 4 之间执行按位 OR 运算。在二进制中,7 将表示为 111,4 将表示为 100。

C++
    1  1  1
|   1  0 0
   ------
    1   1  1

正如我们在上面的例子中看到的,这些位是 set 位,其中至少设置了任何一个相应的位。因此 7|4=7。

3. 按位 XOR (^)

如果在两个整数之间执行按位 XOR 运算,它将比较同一位置的每个位,如果任何一个对应的位不同,即其中一个位应为 1,另一个应为 0,则结果位将设置为 (1)。用于执行按位 XOR 运算的符号是 ^。

示例:我们将在两个数字 7 和 4 之间执行按位 XOR 运算。在二进制中,7 将表示为 111,4 将表示为 100。

C++
    1  1  1
^  1  0 0
   ------
    0  1  1

正如我们在上面的例子中看到的,这些位是 SET BITS 其对应的 BITS 不同 。因此 7^4=3。

4.按位 NOT (~)

按位 NOT 操作对单个数字执行。它将当前位更改为它的补码,即如果当前位为 0,则结果为 1,如果当前位为 1,则它将变为 0。它由符号 ~ 表示。

示例:我们将对数字 4 执行按位 NOT 运算。数字 4 以二进制表示为 100。

C++
~ 1 0 0
  ------
   0  1  1

正如我们在 result 中看到的,初始值为 1 的位在 result 中为 0,反之亦然。因此,数字 4 的按位 NOT 将为 3。

5.左移 (<<)

此运算符将 Integer 的位移动到左侧的特定数字(如前所述)。此左移操作等效于将整数乘以 2 次方移位的位置数。用于表示 Left Shift Operator 的符号是 <<。

示例:假设我们有一个整数 5,我们将它的位左移 2 个位置。该操作将表示为 x << 2。

数字 5 以二进制表示为 101。我们将在开头添加一些零以左移位。因此,它将表示为 00000101。现在,我们将所有位向左移动两个位置,并将空位置填充为 0。因此,它将变为 00010100,即 20 。如前所述,左移数字两位意味着将其乘以 2 得到 2,即 4 。5*4 = 20 显示了上述陈述。

6.右移 (>>)

此运算符将 Integer 的位向右移动特定数字(如前所述)。此右移操作等效于将整数除以移位位置的 2 次方数。用于表示 Left Shift Operator 的符号是 >>。

示例:假设我们有一个整数 16,我们将它的位右移 2 个位置。该操作将表示为 x >> 2。

数字 16 以二进制表示为 10000。我们将在开头添加一些零以右移位。因此,它将表示为 00010000。现在,我们将所有位向右移动两个位置,并将空位置填充为 0。因此,它将变为 00000100,即 4 。如前所述,将数字右移两位意味着将其除以 2 升至 2,即 4 。16*4 = 4 显示了上述陈述。

C++ 编程按位运算符

以下是该主题的实现:

C++
// C++ Program to demonstrate
// Bitwise Operator
#include <iostream>

using namespace std;

// Main function
int main()
{
    int a = 5; //  101
    int b = 3; //  011

    // Bitwise AND
    int bitwise_and = a & b;

    // Bitwise OR
    int bitwise_or = a | b;

    // Bitwise XOR
    int bitwise_xor = a ^ b;

    // Bitwise NOT
    int bitwise_not = ~a;

    // Bitwise Left Shift
    int left_shift = a << 2;

    // Bitwise Right Shift
    int right_shift = a >> 1;

      // Printing the Results of
    // Bitwise Operators
    cout << "AND: " << bitwise_and << endl;
    cout << "OR: " << bitwise_or << endl;
    cout << "XOR: " << bitwise_xor << endl;
    cout << "NOT a: " << bitwise_not << endl;
    cout << "Left Shift: " << left_shift << endl;
    cout << "Right Shift: " << right_shift << endl;

    return 0;
}

输出

C++
AND: 1
OR: 7
XOR: 6
NOT a: -6
Left Shift: 20
Right Shift: 2

结论

总之,按位运算符用于在二进制(位)级别执行操作。我们有各种按位运算符,如 C++ 中的 AND、OR、XOR、NOT、左移和右移运算符。通过此操作,可以非常精确地完成单个位的操作,这在低级数据处理中是必不可少的。

夏天来了,也是提高技能的时候了!超过 5,000 名学习者现在已经完成了从 DSA 基础知识到高级开发计划(如全栈、后端开发、数据科学)的旅程。

当我们的 DSA to Development: Coding Guide 将帮助您在几个月内掌握所有这些时,为什么还要去其他任何地方呢!现在就申请我们的DSA发展计划,我们的顾问将与您联系以获得进一步的指导和支持。

Comments