Uso de la bandera de bits STL

Tabla de contenido

Uso de la bandera de bits STL

Consideraciones sobre el conjunto de bits

Algoritmo STL de Bitset

Sección de bitset: ejemplo de código

Parte uno

La segunda parte

Sección de bitset: visualización de resultados

Similitudes y diferencias entre Bitset y vector

Sección de vectores: ejemplo de código

Sección de vectores: visualización de resultados


Uso de la bandera de bits STL

Consideraciones sobre el conjunto de bits

Los bits pueden almacenar dos estados: establecer (1) o restablecer (0).

Algoritmo STL de Bitset

 

 

 

Sección de bitset: ejemplo de código

Parte uno

#include <iostream>  
#include <bitset>  
#include <vector>  
using namespace std;  
  
int main()  
{  
    bitset<4> BitFlag1("1101"),BitFlag2(1000),BitFlag3(0b0010); // Bitset中的元素要么为1要么为0  
    bitset<4> BitFlag4(BitFlag1^BitFlag2);  
    cout << BitFlag1 << endl;  
    cout << BitFlag1.flip() << endl; // 全部按位取反  
    cout << BitFlag3 << endl;  
    cout << BitFlag3[1] << endl;  // 用下标访问元素
    cout << (BitFlag1 & BitFlag2^BitFlag3 | BitFlag4) << endl;  
    cout << "BitFlag1中1的个数是" << BitFlag1.count() << endl;  
    cout << "将BitFlag4的第0位置0,得" << BitFlag4.reset(1) << endl;  
    cout << "将BitFlag4的第0位置1,得" << BitFlag4.set(1) << endl;  
}  

 

La segunda parte

#include <vector>  
#include <bitset>  
#include <iostream>  
#include <string>  
using namespace std;  
  
int main()  
{  
    bitset<4> BitFlag1(3), BitFlag2(8), BitFlag3;  
    BitFlag3 = BitFlag1.to_ullong() + BitFlag2.to_ullong(); // to_ullong将二进制变量转化为十进制无符号长长整型(unsigned long long)变量  
    cout << BitFlag3.to_ulong() << endl; // 与to_ullong功能一样,将二进制变量转换为unsigned long型的变量  
    string Num = to_string(8 + 7); // to_string用于将bitset类型的变量转换为string类型的变量  
    cout << Num + "sss" << endl; // 此时Num变成了string类型的字符串  
}  

 

Sección de bitset: visualización de resultados

 

Encontraremos que: BitFlag es 1101, pero es 1011 en orden inverso en la memoria.

Las similitudes y diferencias entre Bitset y vector <bool>

diferente

Bitset solo puede contener un número limitado de bits para operaciones, por lo que debemos incluir claramente el número de bits antes de usar bitset, y el vector <bool> puede expandir dinámicamente la memoria. En teoría, puede contener un número ilimitado de bits para operaciones, y el primero puede realizar operaciones de bits. , Este último no lo es.

con

Los elementos contenidos en Bitset y vector <bool> son ambos 1 o 0.

Sección V ector <bool>: ejemplo de código

#include <iostream>  
#include <vector>  
using namespace std;  
  
int main()  
{  
    vector<bool> VectorBoolArray1{ 1,1,0,1 },VectorBoolArray2;  
    VectorBoolArray1.flip(); // 按位取反  
    VectorBoolArray2.push_back(1);  
    VectorBoolArray2.push_back(0);  
    VectorBoolArray2.push_back(0);  
    VectorBoolArray2.push_back(0);  
    VectorBoolArray2[2] = 1;  
    VectorBoolArray2.at(1) = 0;  
}  
// STL算法均适用于vector<bool>,除此之外还多了一个其他vector容器没有的函数:flip按位取反函数.

 

Sección de vector <bool>: visualización de resultados

 

Descubrimos que el orden en el que el vector <bool> almacena las variables bool es el mismo que el orden de entrada de las variables, que es diferente de la disposición inversa del conjunto de bits.

Supongo que te gusta

Origin blog.csdn.net/weixin_45590473/article/details/108182231
Recomendado
Clasificación