C++位操作

计算机无法理解我们使用的高级语言。因此,为了让计算机理解,有一种标准方法,即将给定的指令转换为一些称为位的数字信息。位的序列表示特定的指令。

1.jpeg

位被定义为以数字形式存储数据的基本单元。

它有两个值,表示如下:

1 - 表示信号存在或为真

0 - 表示信号不存在或为假

位表示任何指令的逻辑状态。位的序列具有基数为2。因此,如果我们有一系列二进制数字,它是从左到右读取的,而2的幂则递增。

2.png

因此,在了解位的基础知识后,让我们了解C++中的位操作。

位操作

位操作被定义为对n个数字的位级别执行一些基本操作。它是一种速度快且基本的方法,因为它直接在机器端工作。

让我们进入C++中位操作的基础知识。

  • 逻辑与

逻辑与取两个操作数并在两者都为真时返回true。符号是&&。

让我们看一下与运算符的真值表。

3.png

在最后一行,A和B都为高,导致高输出。

C++程序

#include <iostream>  
using namespace std;  
  
int main() {  
        int a = 5;  
        int b = 9;  
    
        // false && false = false  
        cout << ((a == 0) && (a > b)) << endl;  
    
        // false && true = false  
        cout << ((a == 0) && (a < b)) << endl;  
  
        // true && false = false  
     cout << ((a == 5) && (a > b)) << endl;  
  
        // true && true = true  
        cout << ((a == 5) && (a < b)) << endl;  
  
      return 0;  
}  

输出:

4.png

  • 逻辑或

逻辑或在两个操作数中的任一个输入高时给出高输出。符号是||。

让我们看一下或运算符的真值表。

5.png

在这里我们可以看到第一行。输入A和B都是低,结果是0(低输出)。

C++程序

#include <iostream>  
using namespace std;  
  
int main() {  
    int a = 5;  
    int b = 9;  
    
    // false && false = false  
    cout << ((a == 0) || (a > b)) << endl;  
    
    // false && true = true  
    cout << ((a == 0) || (a < b)) << endl;  
  
    // true && false = true  
    cout << ((a == 5) || (a > b)) << endl;  
  
    // true && true = true  
    cout << ((a == 5) || (a < b)) << endl;  
  
    return 0;  
}

输出:

6.png

  • 逻辑非

逻辑非只取一个操作数并将其反转。如果操作数为低,则使其为高,反之亦然。符号是!。

让我们看一下非运算符的真值表。

7.png

C++程序

#include <iostream>  
using namespace std;  
  
int main() {  
     int a = 5;  
    
     // !false = true  
     cout << !(a == 0) << endl;  
  
     // !true = false  
     cout << !(a == 5) << endl;  
  
     return 0;  
}

输出:

8.png

  • 左移运算符

左移运算符采用一个操作数,并将左操作数的值向左移动指定的位数。

它用<<表示。

C++程序

#include<iostream>  
using namespace std;  
int main()  
{  
    // a = 5(00000101), b = 9(00001001)  
    unsigned char a = 5, b = 9;  
  
    // 结果为00001010  
    cout << "a<<1: "<<  (a<<1) << "\n";  
  
    // 结果为00010010  
    cout << "b<<1: " <<  (b<<1);  
    return 0;  
}

输出:

9.png

  • 右移运算符

右移运算符采用一个操作数,并将右操作数的值向右移动指定的位数。

它用>>表示。

C++程序

#include <bits/stdc++.h>  
using namespace std;  
int main()  
{  
    // a = 5(00000101), b = 9(00001001)  
    unsigned char a = 5, b = 9;  
  
    // 结果为00000010  
  
    cout<< "a>>1: " <<  (a >> 1) << "\n";  
  
    // 结果为00000100  
    cout<< "b>>1: " <<  (b >> 1);  
    return 0;  
}

输出:

10.png

标签: C++语言, C++语言教程, C++语言技术, C++语言学习, C++语言学习教程, C++语言下载, C++语言开发, C++语言入门教程, C++语言进阶教程, C++语言高级教程, C++语言面试题, C++语言笔试题, C++语言编程思想