<bitset> operators
The latest version of this topic can be found at <bitset> operators.
operator& | operator>> | operator<< |
operator_xor | operator_or |
operator&
Performs a bitwise AND
between two bitsets.
template <size_t size>
bitset<size>
operator&(
const bitset<size>& left,
const bitset<size>& right);
Parameters
left
The first of the two bitsets whose respective elements are to be combined with the bitwise AND
.
right
The second of the two valarrays whose respective elements are to be combined with the bitwise AND
.
Return Value
A bitset whose elements are the result of performing the AND
operation on the corresponding elements of left
and right
.
Example
// 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<<
Inserts a text representation of the bit sequence into the output stream.
template <class CharType, class Traits, size_t N>
basic_ostream<CharType, Traits>& operator<<(
basic_ostream<CharType, Traits>& ostr,
const bitset<N>&
right);
Parameters
right
An object of type bitset<N> that is to be inserted into the output stream as a string.
Return Value
A text representation of the bit sequence in ostr.
Remarks
The template function overloads operator<<, allowing a bitset to be written out without first converting it into a string. The template function effectively executes:
ostr << _ Right. to_string < CharType, Traits, allocator< CharType> > ( )
Example
// 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 steam
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>>
Reads a string of bit characters into a bitset.
template <class CharType, class Traits, size_t Bits>
basic_istream<CharType, Traits>& operator>> (
basic_istream<CharType, Traits>&
_Istr,
bitset<N>&
right);
Parameters
_Istr
The string that is entered into the input stream to be inserted into the bitset.
right
The bitset that is receiving the bits from the input stream.
Return Value
The template function returns the string _Istr
.
Remarks
The template function overloads operator>> to store in the bitset _ Right the value bitset( str
), where str
is an object of type basic_string < CharType, Traits, allocator< CharType> > & extracted from _Istr
.
The template function extracts elements from _Istr
and inserts them into the bitset until:
All the bit elements have been extracted from the input stream and stored in the bitset.
The bitset is filled up with bits from the input stream.
An input element is encountered that is neither 0 nor 1.
Example
#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_xor
Performs a bitwise EXCLUSIVE-OR
between two bitsets.
template <size_t size>
bitset<size>
operator^(
const bitset<size>& left,
const bitset<size>& right);
Parameters
left
The first of the two bitsets whose respective elements are to be combined with the bitwise EXCLUSIVE-OR
.
right
The second of the two valarrays whose respective elements are to be combined with the bitwise EXCLUSIVE-OR
.
Return Value
A bitset whose elements are the result of performing the EXCLUSIVE-OR
operation on the corresponding elements of left
and right
.
Example
// 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_or
Performs a bitwise OR
between two bitsets.
template <size_t size>
bitset<size>
operator|(
const bitset<size>& left,
const bitset<size>& right);
Parameters
left
The first of the two bitsets whose respective elements are to be combined with the bitwise OR
.
right
The second of the two valarrays whose respective elements are to be combined with the bitwise OR
.
Return Value
A bitset whose elements are the result of performing the OR
operation on the corresponding elements of left
and right
.
Example
// 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