Compartir a través de


<bitset> Operadores

operator&

Efectúa una operación bit a bit AND entre dos conjuntos de bits.

template <size_t size>
bitset<size>
operator&(
    const bitset<size>& left,
    const bitset<size>& right);

Parámetros

left
El primero de los dos conjuntos de bits cuyos elementos respectivos van a combinarse con la operación bit a bit AND.

right
El segundo de los dos valarrays cuyos elementos respectivos van a combinarse con la operación bit a bit AND.

Valor devuelto

Un conjunto de bits cuyos elementos son el resultado de realizar la operación AND en los elementos correspondientes de left y right.

Ejemplo

// bitset_and.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
#include <string>

using namespace std;

int main()
{
   bitset<4> b1 ( string("0101") );
   bitset<4> b2 ( string("0011") );
   bitset<4> b3 = b1 & b2;
   cout << "bitset 1: " << b1 << endl;
   cout << "bitset 2: " << b2 << endl;
   cout << "bitset 3: " << b3 << endl;
}
bitset 1: 0101
bitset 2: 0011
bitset 3: 0001

operator<<

Inserta una representación de texto de la secuencia de bits en el flujo de salida.

template <class CharType, class Traits, size_t N>
basic_ostream<CharType, Traits>& operator<<(
    basic_ostream<CharType, Traits>& ostr,
    const bitset<N>& right);

Parámetros

right
Un objeto de tipo bitset<N> que se va a insertar en el flujo de salida como una cadena.

Valor devuelto

Una representación de texto de la secuencia de bits en ostr.

Comentarios

La función de plantilla sobrecarga operator<<, lo que permite que se escriba un conjunto de bits sin convertirlo primero en una cadena. La función de plantilla ejecuta eficazmente:

ostr << right.to_string<CharType, Traits, allocator<CharType>>()

Ejemplo

// bitset_op_insert.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
#include <string>

int main( )
{
   using namespace std;

   bitset<5> b1 ( 9 );

   // bitset inserted into output stream directly
   cout << "The ordered set of bits in the bitset<5> b1(9)"
        << "\n can be output with the overloaded << as: ( "
        << b1 << " )" << endl;

   // Compare converting bitset to a string before
   // inserting it into the output stream
   string s1;
   s1 =  b1.template to_string<char,
      char_traits<char>, allocator<char> >( );
   cout << "The string returned from the bitset b1"
        << "\n by the member function to_string( ) is: "
        << s1 << "." << endl;
}

operator>>

Lee una cadena de caracteres de bit en un conjunto de bits.

template <class CharType, class Traits, size_t Bits>
basic_istream<CharType, Traits>& operator>> (
    basic_istream<CharType, Traits>& i_str,
    bitset<N>& right);

Parámetros

i_str
La cadena que se escribe en el flujo de entrada para insertarla en un conjunto de bits.

right
El conjunto de bits que recibe los bits del flujo de entrada.

Valor devuelto

La función de plantilla devuelve la cadena i_str.

Comentarios

La función de plantilla sobrecarga operator>> para almacenar en el conjunto de bits right el valor bitset(str), donde str es un objeto de tipo basic_string< CharType, Traits, allocator< CharType > >& extraído de i_str.

La función de plantilla extrae elementos de i_str y los inserta en el conjunto de bits hasta que:

  • Todos los elementos de bits se han extraído del flujo de entrada y se almacenan en el conjunto de bits.

  • El conjunto de bits se llena con bits del flujo de entrada.

  • Se encuentra un elemento de entrada que no es 0 ni 1.

Ejemplo

#include <bitset>
#include <iostream>
#include <string>

using namespace std;
int main()
{
   bitset<5> b1;
   cout << "Enter string of (0 or 1) bits for input into bitset<5>.\n"
        << "Try bit string of length less than or equal to 5,\n"
        << " (for example: 10110): ";
   cin >>  b1;

   cout << "The ordered set of bits entered from the "
        << "keyboard\n has been input into bitset<5> b1 as: ( "
        << b1 << " )" << endl;

   // Truncation due to longer string of bits than length of bitset
   bitset<2> b3;
   cout << "Enter string of bits (0 or 1) for input into bitset<2>.\n"
        << " Try bit string of length greater than 2,\n"
        << " (for example: 1011): ";
   cin >>  b3;

   cout << "The ordered set of bits entered from the "
        << "keyboard\n has been input into bitset<2> b3 as: ( "
        << b3 << " )" << endl;

   // Flushing the input stream
   char buf[100];
   cin.getline(&buf[0], 99);

   // Truncation with non-bit value
   bitset<5> b2;
   cout << "Enter a string for input into  bitset<5>.\n"
        << " that contains a character than is NOT a 0 or a 1,\n "
        << " (for example: 10k01): ";
   cin >>  b2;

   cout << "The string entered from the keyboard\n"
        << " has been input into bitset<5> b2 as: ( "
        << b2 << " )" << endl;
}

operator^

Efectúa una operación bit a bit EXCLUSIVE-OR entre dos conjuntos de bits.

template <size_t size>
bitset<size>
operator^(
    const bitset<size>& left,
    const bitset<size>& right);

Parámetros

left
El primero de los dos conjuntos de bits cuyos elementos respectivos van a combinarse con la operación bit a bit EXCLUSIVE-OR.

right
El segundo de los dos valarrays cuyos elementos respectivos van a combinarse con la operación bit a bit EXCLUSIVE-OR.

Valor devuelto

Un conjunto de bits cuyos elementos son el resultado de realizar la operación EXCLUSIVE-OR en los elementos correspondientes de left y right.

Ejemplo

// bitset_xor.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
#include <string>

using namespace std;

int main()
{
   bitset<4> b1 ( string("0101") );
   bitset<4> b2 ( string("0011") );
   bitset<4> b3 = b1 ^ b2;
   cout << "bitset 1: " << b1 << endl;
   cout << "bitset 2: " << b2 << endl;
   cout << "bitset 3: " << b3 << endl;
}
bitset 1: 0101
bitset 2: 0011
bitset 3: 0110

operator|

Efectúa una operación OR bit a bit entre dos objetos bitset.

template <size_t size>
bitset<size>
operator|(
    const bitset<size>& left,
    const bitset<size>& right);

Parámetros

left
El primero de los dos conjuntos de bits cuyos elementos respectivos van a combinarse con la operación bit a bit OR.

right
El segundo de los dos valarrays cuyos elementos respectivos van a combinarse con la operación bit a bit OR.

Valor devuelto

Un conjunto de bits cuyos elementos son el resultado de realizar la operación OR en los elementos correspondientes de left y right.

Ejemplo

// bitset_or.cpp
// compile with: /EHsc
#include <bitset>
#include <iostream>
#include <string>

using namespace std;

int main()
{
   bitset<4> b1 ( string("0101") );
   bitset<4> b2 ( string("0011") );
   bitset<4> b3 = b1 | b2;
   cout << "bitset 1: " << b1 << endl;
   cout << "bitset 2: " << b2 << endl;
   cout << "bitset 3: " << b3 << endl;
}
bitset 1: 0101
bitset 2: 0011
bitset 3: 0111