<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