bitset kelas

Menjelaskan jenis objek yang menyimpan urutan yang terdiri dari sejumlah bit tetap yang menyediakan cara yang ringkas untuk menyimpan bendera untuk sekumpulan item atau kondisi. Kelas bitset ini mendukung operasi pada objek jenis bitset yang berisi kumpulan bit dan menyediakan akses waktu konstan ke setiap bit.

Sintaks

template <size_t N>
class bitset

Parameter

N
Menentukan jumlah bit dalam bitset objek dengan bilangan bulat bukan nol tipe size_t yang harus diketahui pada waktu kompilasi.

Keterangan

Tidak seperti Kelas serupavector<bool>, bitset kelas tidak memiliki iterator dan bukan kontainer Pustaka Standar C++. Ini juga berbeda dari vector<bool> dengan ukuran tertentu yang diperbaiki pada waktu kompilasi sesuai dengan ukuran yang ditentukan oleh parameter N templat ketika bitset<N> dideklarasikan.

Bit diatur jika nilainya adalah 1 dan reset jika nilainya adalah 0. Untuk membalik atau membalikkan sedikit adalah mengubah nilainya dari 1 menjadi 0 atau dari 0 menjadi 1. Bit N dalam diindeks bitset oleh nilai bilangan bulat dari 0 hingga N - 1, di mana 0 mengindeks posisi bit pertama dan N - 1 posisi bit akhir.

Anggota

Konstruktor

Nama Deskripsi
bitset Membuat objek kelas bitset<N> dan menginisialisasi bit menjadi nol, ke beberapa nilai yang ditentukan, atau ke nilai yang diperoleh dari karakter dalam string.

Typedefs

Nama Deskripsi
element_type Jenis yang merupakan sinonim untuk jenis bool data dan dapat digunakan untuk mereferensikan bit elemen dalam bitset.

Fungsi

Nama Deskripsi
all Menguji semua bit dalam hal ini bitset untuk menentukan apakah mereka semua diatur ke true.
any Fungsi anggota menguji apakah ada bit dalam urutan yang diatur ke 1.
count Fungsi anggota mengembalikan jumlah bit yang diatur dalam urutan bit.
flip Menginversi nilai semua bit dalam atau bitset menginversi satu bit pada posisi yang ditentukan.
none Menguji apakah tidak ada bit yang telah diatur ke 1 dalam objek bitset .
reset Mengatur ulang semua bit dalam ke bitset 0 atau mengatur ulang sedikit pada posisi yang ditentukan ke 0.
set Mengatur semua bit dalam ke bitset 1 atau mengatur sedikit pada posisi yang ditentukan ke 1.
size Mengembalikan jumlah bit dalam objek bitset .
test Menguji apakah bit pada posisi tertentu dalam bitset diatur ke 1.
to_string bitset Mengonversi objek menjadi representasi string.
to_ullong Mengembalikan jumlah nilai bit dalam bitset sebagai unsigned long long.
to_ulong bitset Mengonversi objek ke unsigned long yang akan menghasilkan urutan bit yang terkandung jika digunakan untuk menginisialisasi bitset.

Kelas

Nama Deskripsi
reference Kelas proksi yang menyediakan referensi ke bit yang terkandung dalam bitset yang digunakan untuk mengakses dan memanipulasi bit individu sebagai kelas pembantu untuk operator[] kelas bitset.

Operators

Nama Deskripsi
operator!= Menguji target bitset untuk ketidaksamaan dengan bitset.
operator&= Apakah kombinasi bitwise bitset dengan operasi bitwise "dan" (&).
operator<< Menggeser bit di bitset sebelah kiri sejumlah posisi yang ditentukan dan mengembalikan hasilnya ke yang baru bitset.
operator<<= Menggeser bit di sebelah kiri jumlah posisi yang ditentukan dan mengembalikan hasilnya ke yang ditargetkan bitsetbitset.
operator== Menguji target bitset untuk kesetaraan dengan bitset.
operator>> Menggeser bit di bitset sebelah kanan jumlah posisi yang ditentukan dan mengembalikan hasilnya ke yang baru bitset.
operator>>= Menggeser bit di sebelah kanan jumlah posisi yang ditentukan dan mengembalikan hasilnya ke yang ditargetkan bitsetbitset.
operator[] Mengembalikan referensi ke bit pada posisi yang ditentukan dalam bitset jika bitset dapat dimodifikasi; jika tidak, referensi mengembalikan nilai bit pada posisi tersebut.
operator^= Apakah kombinasi bitwise bitset dengan operasi "xor" (^) bitwise.
operator|= Apakah kombinasi bitwise bitset dengan operasi bitwise "atau" (|).
operator~ Balikkan semua bit dalam target bitset dan mengembalikan hasilnya.

Struktur

Nama Deskripsi
hash

all

Menguji semua bit dalam bitset ini untuk menentukan apakah semua bit diatur ke true.

bool all() const;

Tampilkan Nilai

Mengembalikan true jika semua bit dalam set ini benar. Mengembalikan false jika satu atau beberapa bit salah.

any

Menguji apakah ada bit dalam urutan yang diatur ke 1.

bool any() const;

Tampilkan Nilai

true jika ada bit dalam hal ini bitset diatur ke 1; false jika semua bit adalah 0.

Contoh

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

int main( )
{
   using namespace std;

   bitset<5> b1 ( 6 );
   bool b, rb;

   cout << "The original bitset b1( 6 ) is: ( "<< b1 << " )"
        << endl;

   b = b1.any ( );

   if ( b )
      cout << "At least one of the bits in bitset is set to 1."
           << endl;
   else
      cout << "None of the bits in bitset are set to 1."
           << endl;

   bitset<5> rb1;
   rb1 = b1.reset ( );

   cout << "The reset bitset is: ( "<< b1 << " )"
        << endl;

   rb = rb1.any ( );

   if ( rb )
      cout << "At least one of the bits in the reset bitset "
           << "are set to 1." << endl;
   else
      cout << "None of the bits in bitset b1 are set to 1."
           << endl;
}
The original bitset b1( 6 ) is: ( 00110 )
At least one of the bits in bitset is set to 1.
The reset bitset is: ( 00000 )
None of the bits in bitset b1 are set to 1.

bitset

Membuat objek kelas bitset<N> dan menginisialisasi bit menjadi nol, atau ke beberapa nilai yang ditentukan, atau ke nilai yang diperoleh dari karakter dalam string.

1) constexpr bitset();
2) bitset(unsigned long val);
3) constexpr bitset(unsigned long long val);
4) template <class CharType, class Traits, class Allocator>
    explicit bitset(
        const basic_string<CharType, Traits, Allocator>& str,
        typename basic_string<CharType, Traits, Allocator>::size_type pos = 0);
    
5) template <class CharType, class Traits, class Allocator>
    explicit bitset(
        const basic_string<CharType, Traits, Allocator>& str,
        typename basic_string<CharType, Traits, Allocator>::size_type pos,
        typename basic_string<CharType, Traits, Allocator>::size_type count,
        CharType Zero = CharType ('0'),
        CharType One = CharType ('1'));
    
6) template<class CharType>
    explicit bitset(
        const CharType* str,
        typename basic_string<CharType>::size_type
        n = basic_string<CharType>::npos,
        CharType zero = CharType('0'),
        CharType one = CharType('1'));

Parameter

val
Bilangan bulat tidak bertanda yang representasi dasarnya dua digunakan untuk menginisialisasi bit dalam yang bitset sedang dibangun.

str
String nol dan yang digunakan untuk menginisialisasi bitset nilai bit.

pos
Posisi karakter dalam string, dihitung dari kiri ke kanan dan dimulai dengan nol, digunakan untuk menginisialisasi bit pertama dalam bitset.

count
Jumlah karakter dalam string yang digunakan untuk menyediakan nilai awal untuk bit dalam bitset.

Zero
Karakter yang digunakan untuk mewakili nol. Defaultnya adalah '0'.

One
Karakter yang digunakan untuk mewakili karakter. Defaultnya adalah '1'.

Keterangan

1) Membuat objek kelas bitset<N> dan menginisialisasi semua bit N ke nilai default nol.

2-3) Membuat objek kelas bitset<N> dan menginisialisasi bit dari val parameter .

4) Membuat objek kelas bitset<N> dan menginisialisasi bit dari karakter yang disediakan dalam string nol dan yang. Jika ada karakter string selain 0 atau 1, konstruktor melempar objek kelas invalid argument. Jika posisi yang ditentukan (pos) berada di luar panjang string, maka konstruktor melempar objek kelas out_of_range. Konstruktor hanya mengatur bit tersebut pada posisi j di bitset mana karakter dalam string pada posisi pos + j 1. Secara default, pos adalah 0.

5) Mirip 4) dengan tetapi menyertakan parameter lain, count, yang menentukan jumlah bit yang akan diinisialisasi. Ini memiliki dua parameter opsional, _Zero dan _One, yang menunjukkan karakter apa yang harus ditafsirkan str untuk berarti masing-masing 0 bit dan 1 bit.

6) Membuat objek kelas bitset<N>, menginisialisasi bit N ke nilai yang sesuai dengan karakter yang disediakan dalam string karakter gaya C dari nol dan yang. Anda memanggil konstruktor tanpa mentransmisikan string ke dalam jenis string, misalnya: bitset<5> b5("01011");

Contoh

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

int main( )
{
   // Using the default constructor
   using namespace std;
   bitset<2> b0;
   cout << "The set of bits in bitset<2> b0 is: ( "
        << b0 << " )." << endl;

   // Using the second member function
   bitset<5> b1 ( 6 );
   cout << "The set of bits in bitset<5> b1( 6 ) is: ( "
        << b1 << " )." << endl;

   // The template parameter N can be an expression
   bitset< 2 * sizeof ( int ) > b2;
   cout << "The set of bits in bitset< 2 * sizeof ( int ) > b2 is: ( "
        << b2 << " )." << endl;

   // The base two representation will be truncated
   // if its length exceeds the size of the bitset
   bitset<3> b3 ( 6 );
   cout << "The set of bits in bitset<3> b3( 6 ) is ( "
        << b3 << " )." << endl;

   // Using a c-style string to initialize the bitset
    bitset<7> b3andahalf ( "1001001" );
    cout << "The set of bits in bitset<7> b3andahalf ( \"1001001\" )"
         << " is ( " << b3andahalf << " )." << endl;

   // Using the fifth member function with the first parameter
   string bitval4 ( "10011" );
   bitset<5> b4 ( bitval4 );
   cout << "The set of bits in bitset<5> b4( bitval4 ) is ( "
        << b4 << " )." << endl;

   // Only part of the string may be used for initialization

   // Starting at position 3 for a length of 6 (100110)
   string bitval5 ("11110011011");
   bitset<6> b5 ( bitval5, 3, 6 );
   cout << "The set of bits in bitset<11> b5( bitval, 3, 6 ) is ( "
        << b5 << " )." << endl;

   // The bits not initialized with part of the string
   // will default to zero
   bitset<11> b6 ( bitval5, 3, 5 );
   cout << "The set of bits in bitset<11> b6( bitval5, 3, 5 ) is ( "
        << b6 << " )." << endl;

   // Starting at position 2 and continue to the end of the string
   bitset<9> b7 ( bitval5, 2 );
   cout << "The set of bits in bitset<9> b7( bitval, 2 ) is ( "
        << b7 << " )." << endl;
}
The set of bits in bitset<2> b0 is: ( 00 ).
The set of bits in bitset<5> b1( 6 ) is: ( 00110 ).
The set of bits in bitset<2 * sizeof ( int ) > b2 is: ( 00000000 ).
The set of bits in bitset<3> b3( 6 ) is ( 110 ).
The set of bits in bitset<5> b4( bitval4 ) is ( 10011 ).
The set of bits in bitset<11> b5( bitval, 3, 6 ) is ( 100110 ).
The set of bits in bitset<11> b6( bitval5, 3, 5 ) is ( 00000010011 ).
The set of bits in bitset<9> b7( bitval, 2 ) is ( 110011011 ).

count

Mengembalikan jumlah bit yang ditetapkan dalam urutan bit.

size_t count() const;

Tampilkan Nilai

Jumlah bit yang diatur dalam urutan bit.

Contoh

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

int main( )
{
    using namespace std;

    bitset<5> b1(4);

    cout << "The collection of bits in the original bitset is: ( "
         << b1 << " )" << endl;

    size_t i;
    i = b1.count();
    cout << "The number of bits in the bitset set to 1 is: "
         << i << "." << endl;

    bitset<5> fb1;
    fb1 = b1.flip();

    cout << "The collection of flipped bits in the modified bitset "
         << "is: ( " << b1 << " )" << endl;

    size_t ii;
    ii = fb1.count();
    cout << "The number of bits in the bitset set to 1 is: "
         << ii << "." << endl;
}
The collection of bits in the original bitset is: ( 00100 )
The number of bits in the bitset set to 1 is: 1.
The collection of flipped bits in the modified bitset is: ( 11011 )
The number of bits in the bitset set to 1 is: 4.

element_type

Jenis yang merupakan sinonim untuk jenis bool data dan dapat digunakan untuk mereferensikan bit elemen dalam bitset.

typedef bool element_type;

Contoh

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

int main( )
{
   using namespace std;

   bitset<3> b1 ( 2 );
   cout << "Original bitset b1(6) is: ( "<< b1 << " )"
        << endl;

   //Compare two ways to reference bits in a bitset
   bool b;
   bitset<5>::element_type e;

   b = b1.test ( 2 );
   if ( b )
      cout << "The bit at position 2 of bitset b1"
           << "has a value of 1." << endl;
   else
      cout << "The bit at position 2 of bitset b1"
           << "has a value of 0." << endl;
   b1[2] = 1;
   cout << "Bitset b1 modified by b1[2] = 1 is: ( "<< b1 << " )"
        << endl;

   e = b1.test ( 2 );
   if ( e )
      cout << "The bit at position 2 of bitset b1"
           << "has a value of 1." << endl;
   else
      cout << "The bit at position 2 of bitset b1"
           << "has a value of 0." << endl;
}
Original bitset b1(6) is: ( 010 )
The bit at position 2 of bitset b1has a value of 0.
Bitset b1 modified by b1[2] = 1 is: ( 110 )
The bit at position 2 of bitset b1has a value of 1.

flip

Menginversi nilai semua bit dalam atau bitset menginversi satu bit pada posisi yang ditentukan.

bitset<N>& flip();
bitset<N>& flip(size_t pos);

Parameter

pos
Posisi bit yang nilainya akan dibalik.

Tampilkan Nilai

Salinan yang dimodifikasi bitset yang fungsi anggotanya dipanggil.

Keterangan

Fungsi anggota kedua melemparkan out_of_range pengecualian jika posisi yang ditentukan sebagai parameter lebih besar dari ukuran Nbitset<N> bit yang dibalik.

Contoh

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

int main( )
{
   using namespace std;
   bitset<5> b1 ( 6 );

   cout << "The collection of bits in the original bitset is: ( "
        << b1 << " )" << endl;

   bitset<5> fb1;
   fb1 = b1.flip ( );

   cout << "After flipping all the bits, the bitset becomes: ( "
        << fb1 << " )" << endl;

   bitset<5> f3b1;
   f3b1 = b1.flip ( 3 );

   cout << "After flipping the fourth bit, the bitset becomes: ( "
        << f3b1 << " )" << endl << endl;

   bitset<5> b2;
   int i;
   for ( i = 0 ; i <= 4 ; i++ )
   {
      b2.flip(i);
      cout << b2 << "  The bit flipped is in position "
           << i << ".\n";
   }
}
The collection of bits in the original bitset is: ( 00110 )
After flipping all the bits, the bitset becomes: ( 11001 )
After flipping the fourth bit, the bitset becomes: ( 10001 )

00001  The bit flipped is in position 0.
00011  The bit flipped is in position 1.
00111  The bit flipped is in position 2.
01111  The bit flipped is in position 3.
11111  The bit flipped is in position 4.

hash

template <class T> struct hash;
template <size_t N> struct hash<bitset<N>>;

tidak ada

Menguji apakah tidak ada bit yang telah diatur ke 1 dalam objek bitset .

bool none() const;

Tampilkan Nilai

true jika tidak ada bit dalam bitset telah diatur ke 1; false jika setidaknya satu bit telah diatur ke 1.

Contoh

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

int main( )
{
   using namespace std;

   bitset<5> b1 ( 6 );
   bool b, rb;

   cout << "Original bitset b1(6) is: ( " << b1 << " )"
        << endl;

   b = b1.none ( );

   if ( b )
      cout << "None of the bits in bitset b1 are set to 1."
           << endl;
   else
      cout << "At least one of the bits in bitset b1 is set to 1."
           << endl;

   bitset<5> rb1;
   rb1 = b1.reset ( );
   rb = rb1.none ( );
   if ( rb )
      cout << "None of the bits in bitset b1 are set to 1."
           << endl;
   else
      cout << "At least one of the bits in bitset b1 is set to 1."
           << endl;
}
Original bitset b1(6) is: ( 00110 )
At least one of the bits in bitset b1 is set to 1.
None of the bits in bitset b1 are set to 1.

operator!=

Menguji bitset target untuk ketidaksetaraan dengan bitset tertentu.

bool operator!=(const bitset<N>& right) const;

Parameter

right
Yang bitset akan dibandingkan dengan bitset target untuk ketidaksetaraan.

Tampilkan Nilai

true jika bitset berbeda; false jika mereka sama.

Keterangan

Bitset harus berukuran sama.

Contoh

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

int main( )
{
   using namespace std;

   bitset<5> b1 ( 7 );
   bitset<5> b2 ( 7 );
   bitset<5> b3 ( 2 );
   bitset<4> b4 ( 7 );

   if ( b1 != b2 )
      cout << "Bitset b1 is different from bitset b2." << endl;
   else
      cout << "Bitset b1 is the same as bitset b2." << endl;

   if ( b1 != b3 )
      cout << "Bitset b1 is different from bitset b3." << endl;
   else
      cout << "Bitset b1 is the same as bitset b3." << endl;

   // This would cause an error because bitsets must have the
   // same size to be tested
   // if ( b1 != b4 )
   //   cout << "Bitset b1 is different from bitset b4." << endl;
   // else
   //   cout << "Bitset b1 is the same as bitset b4." << endl;
}
Bitset b1 is the same as bitset b2.
Bitset b1 is different from bitset b3.

operator&=

Apakah kombinasi bitwise bitset dengan operasi bitwise "dan" (&).

bitset<N>& operator&=(const bitset<N>& right);

Parameter

right
Yang bitset akan dikombinasikan bitwise dengan bitset target.

Tampilkan Nilai

Bitset target yang dimodifikasi yang dihasilkan dari operasi bitwise "dan" (&) dengan bitset yang ditentukan sebagai parameter.

Keterangan

Dua bit yang dikombinasikan oleh AND operator mengembalikan true jika setiap bit benar; jika tidak, kombinasinya mengembalikan false.

Dua bitset harus berukuran sama.

Contoh

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

int main( )
{
   using namespace std;

   bitset<5> b1 ( 7 );
   bitset<5> b2 ( 11 );
   bitset<4> b3 ( 7 );

   cout << "The target bitset b1 is:    ( "<< b1 << " )." << endl;
   cout << "The parameter bitset b2 is: ( "<< b2 << " )." << endl;
   cout << endl;

   b1 &= b2;
   cout << "After bitwise AND combination,\n"
        << "the target bitset b1 becomes:   ( "<< b1 << " )."
        << endl;

   // Note that the parameter-specified bitset is unchanged
   cout << "The parameter bitset b2 remains: ( "<< b2 << " )."
        << endl;

   // The following would cause an error because the bisets
   // must be of the same size to be combined
   // b1 &= b3;
}
The target bitset b1 is:    ( 00111 ).
The parameter bitset b2 is: ( 01011 ).

After bitwise AND combination,
the target bitset b1 becomes:   ( 00011 ).
The parameter bitset b2 remains: ( 01011 ).

operator<<

Menggeser bit di bitset sebelah kiri sejumlah posisi yang ditentukan dan mengembalikan hasilnya ke yang baru bitset.

bitset<N> operator<<(size_t pos) const;

Parameter

pos
Jumlah posisi di sebelah kiri yang bitnya akan digeser bitset .

Tampilkan Nilai

Bitset yang dimodifikasi dengan bit digeser ke kiri jumlah posisi yang diperlukan.

Keterangan

Fungsi operator anggota mengembalikan bitset(*this) <<= pos tempat <<= menggeser bit di sebelah bitset kiri jumlah posisi yang ditentukan dan mengembalikan hasilnya ke yang ditargetkan bitset.

Contoh

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

int main( )
{
   using namespace std;

   bitset<5> b1 ( 7 );

   cout << "The bitset b1 is: ( "<< b1 << " )." << endl;

   bitset<5> b2;
   b2 = b1 << 2;

   cout << "After shifting the bits 2 positions to the left,\n"
        << " the bitset b2 is: ( "<< b2 << " )."
        << endl;

   bitset<5> b3 = b2 >> 1;

   cout << "After shifting the bits 1 position to the right,\n"
        << " the bitset b3 is: ( " << b3 << " )."
        << endl;
}

operator<<=

Menggeser bit di sebelah kiri jumlah posisi yang ditentukan dan mengembalikan hasilnya ke yang ditargetkan bitsetbitset.

bitset<N>& operator<<=(size_t pos);

Parameter

pos
Jumlah posisi di sebelah kiri bit yang akan digeser bitset .

Tampilkan Nilai

Ditargetkan dimodifikasi bitset sehingga bit telah digeser ke kiri jumlah posisi yang diperlukan.

Keterangan

Jika tidak ada elemen yang ada untuk bergeser ke posisi, fungsi akan menghapus bit ke nilai 0.

Contoh

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

int main( )
{
   using namespace std;
   bitset<5> b1 ( 7 );
   cout << "The target bitset b1 is: ( "<< b1 << " )." << endl;
   b1 <<= 2;
   cout << "After shifting the bits 2 positions to the left,\n"
        << "the target bitset b1 becomes: ( "<< b1 << " )."
        << endl;
}
The target bitset b1 is: ( 00111 ).
After shifting the bits 2 positions to the left,
the target bitset b1 becomes: ( 11100 ).

operator==

Menguji bitset target untuk kesetaraan dengan bitset tertentu.

bool operator==(const bitset<N>& right) const;

Parameter

right
Yang bitset akan dibandingkan dengan bitset target untuk kesetaraan.

Tampilkan Nilai

true jika bitset sama; false jika mereka berbeda.

Keterangan

Bitset harus berukuran sama.

Contoh

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

int main( )
{
   using namespace std;
   bitset<5> b1 ( 7 );
   bitset<5> b2 ( 7 );
   bitset<5> b3 ( 2 );
   bitset<4> b4 ( 7 );

   if ( b1 == b2 )
      cout << "Bitset b1 is the same as bitset b2." << endl;
   else
      cout << "Bitset b1 is different from bitset b2." << endl;

   if ( b1 == b3 )
      cout << "Bitset b1 is the same as bitset b3." << endl;
   else
      cout << "Bitset b1 is different from bitset b3." << endl;

   // This would cause an error because bitsets must have the
   // same size to be tested
   // if ( b1 == b4 )
   //   cout << "Bitset b1 is the same as bitset b4." << endl;
   // else
   //   cout << "Bitset b1 is different from bitset b4." << endl;
}
Bitset b1 is the same as bitset b2.
Bitset b1 is different from bitset b3.

operator>>

Menggeser bit di bitset sebelah kanan jumlah posisi yang ditentukan dan mengembalikan hasilnya ke bitset baru.

bitset<N> operator>>(size_t pos) const;

Parameter

pos
Jumlah posisi di sebelah kanan bit yang akan digeser bitset .

Tampilkan Nilai

Bitset baru di mana bit telah digeser ke kanan jumlah posisi yang diperlukan relatif terhadap yang ditargetkan bitset.

Contoh

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

int main( )
{
   using namespace std;
   bitset<5> b1 ( 7 );
   cout << "The bitset b1 is: ( "<< b1 << " )." << endl;

   bitset<5> b2;
   b2 = b1 << 2;

   cout << "After shifting the bits 2 positions to the left,\n"
        << "the bitset b2 is: ( "<< b2 << " )."
        << endl;
   bitset<5> b3 = b2 >> 1;

   cout << "After shifting the bits 1 position to the right,\n"
        << "the bitset b3 is: ( " << b3 << " )."
        << endl;
}
The bitset b1 is: ( 00111 ).
After shifting the bits 2 positions to the left,
the bitset b2 is: ( 11100 ).
After shifting the bits 1 position to the right,
the bitset b3 is: ( 01110 ).

operator>>=

Menggeser bit di sebelah kanan jumlah posisi yang ditentukan dan mengembalikan hasilnya ke yang ditargetkan bitsetbitset.

bitset<N>& operator>>=(size_t pos);

Parameter

pos
Jumlah posisi di sebelah kanan bit yang akan digeser bitset .

Tampilkan Nilai

Ditargetkan dimodifikasi bitset sehingga bit telah digeser ke kanan jumlah posisi yang diperlukan.

Keterangan

Jika tidak ada elemen yang ada untuk bergeser ke posisi, fungsi akan menghapus bit ke nilai 0.

Contoh

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

int main( )
{
   using namespace std;
   bitset<5> b1 ( 28 );
   cout << "The target bitset b1 is: ( "<< b1 << " )." << endl;

   b1 >>= 2;
   cout << "After shifting the bits 2 positions to the right,\n"
        << "the target bitset b1 becomes: ( "<< b1 << " )."
        << endl;
}
The target bitset b1 is: ( 11100 ).
After shifting the bits 2 positions to the right,
the target bitset b1 becomes: ( 00111 ).

operator[]

Mengembalikan referensi ke bit pada posisi yang ditentukan dalam bitset jika bitset dapat dimodifikasi; jika tidak, referensi mengembalikan nilai bit pada posisi tersebut.

bool operator[](size_t pos) const;
reference operator[](size_t pos);

Parameter

pos
Posisi menemukan bit dalam bitset.

Keterangan

Ketika Anda mendefinisikan _ITERATOR_DEBUG_LEVEL sebagai 1 atau 2 dalam build Anda, kesalahan runtime akan terjadi di executable Anda jika Anda mencoba mengakses elemen di luar batas bitset. Untuk informasi selengkapnya, lihat Iterator yang Diperiksa.

Contoh

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

int main( )
{
   using namespace std;
   bool b;
   bitset<5> b1 ( 6 );
   cout << "The initialized bitset<5> b1( 2 ) is: ( "<< b1 << " )."
        << endl;

   int i;
   for ( i = 0 ; i <= 4 ; i++ )
   {
      b = b1[ i ];
      cout << "  The bit in position "
           << i << " is " << b << ".\n";
   }
}

operator^=

Apakah kombinasi bitwise bitset dengan operasi "xor" (^) bitwise.

bitset<N>& operator^=(const bitset<N>& right);

Parameter

right
Yang bitset akan dikombinasikan bitwise dengan bitset target.

Tampilkan Nilai

Bitset target yang dimodifikasi yang dihasilkan dari operasi bitwise "xor" (^) dengan bitset yang ditentukan sebagai parameter.

Keterangan

Dua bit yang dikombinasikan oleh operator "xor" bitwise (^) mengembalikan true jika setidaknya satu, tetapi tidak keduanya, bit adalah true; jika tidak, kombinasinya mengembalikan false.

Bitset harus berukuran sama.

Contoh

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

int main( )
{
   using namespace std;
   bitset<5> b1 ( 7 );
   bitset<5> b2 ( 11 );
   bitset<4> b3 ( 7 );

   cout << "The target bitset b1 is:    ( "<< b1 << " )." << endl;
   cout << "The parameter bitset b2 is: ( "<< b2 << " )." << endl;
   cout << endl;

   b1 ^= b2;
   cout << "After bitwise exclusive OR combination,\n"
        << "the target bitset b1 becomes:   ( "<< b1 << " )."
        << endl;

   // Note that the parameter-specified bitset in unchanged
   cout << "The parameter bitset b2 remains: ( "<< b2 << " )."
        << endl;

   // The following would cause an error because the bitsets
   // must be of the same size to be combined
   // b1 |= b3;
}
The target bitset b1 is:    ( 00111 ).
The parameter bitset b2 is: ( 01011 ).

After bitwise exclusive OR combination,
the target bitset b1 becomes:   ( 01100 ).
The parameter bitset b2 remains: ( 01011 ).

operator|=

Menggabungkan dua bitset menggunakan operasi bitwise "atau" (|).

bitset<N>& operator|=(const bitset<N>& right);

Parameter

right
yang bitset akan dikombinasikan bitwise dengan target bitset.

Tampilkan Nilai

Bitset target yang dimodifikasi yang dihasilkan dari operasi bitwise "atau" (|) dengan bitset yang ditentukan sebagai parameter.

Keterangan

Dua bit yang dikombinasikan oleh operator inklusif OR mengembalikan jika setidaknya salah satu bit adalah true; jika kedua bit adalah false, kombinasinya mengembalikan falsetrue .

Bitset harus berukuran sama.

Contoh

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

int main( )
{
   using namespace std;

   bitset<5> b1 ( 7 );
   bitset<5> b2 ( 11 );
   bitset<4> b3 ( 7 );

   cout << "The target bitset b1 is:    ( "<< b1 << " )." << endl;
   cout << "The parameter bitset b2 is: ( "<< b2 << " )." << endl;
   cout << endl;

   b1 |= b2;
   cout << "After bitwise inclusive OR combination,\n"
        << "the target bitset b1 becomes:   ( "<< b1 << " )."
        << endl;

   // Note that the parameter-specified bitset in unchanged
   cout << "The parameter bitset b2 remains: ( "<< b2 << " )."
        << endl;

   // The following would cause an error because the bisets
   // must be of the same size to be combined
   // b1 |= b3;
}
The target bitset b1 is:    ( 00111 ).
The parameter bitset b2 is: ( 01011 ).

After bitwise inclusive OR combination,
the target bitset b1 becomes:   ( 01111 ).
The parameter bitset b2 remains: ( 01011 ).

operator~

Balikkan semua bit dalam bitset target dan mengembalikan hasilnya.

bitset<N> operator~() const;

Tampilkan Nilai

bitset dengan semua bitnya terbalik sehubungan dengan yang ditargetkan bitset.

Contoh

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

int main( )
{
   using namespace std;

   bitset<5> b1 ( 7 );
   bitset<5> b2;
   b2 = ~b1;

   cout << "Bitset b1 is: ( "<< b1 << " )." << endl;
   cout << "Bitset b2 = ~b1 is: ( "<< b2 << " )." << endl;

   // These bits could also be flipped using the flip member function
   bitset<5> b3;
   b3 = b1.flip( );
   cout << "Bitset b3 = b1.flip( ) is: ( "<< b2 << " )." << endl;
}
Bitset b1 is: ( 00111 ).
Bitset b2 = ~b1 is: ( 11000 ).
Bitset b3 = b1.flip( ) is: ( 11000 ).

reference

Kelas proksi yang menyediakan referensi ke bit yang terkandung dalam bitset yang digunakan untuk mengakses dan memanipulasi bit individu sebagai kelas pembantu untuk operator[] kelas bitset.

class reference {
   friend class bitset<N>;
public:
   reference& operator=(bool val);
   reference& operator=(const reference& bitref);
   bool operator~() const;
   operator bool() const;
   reference& flip();
};

Parameter

val
Nilai objek jenis bool yang akan ditetapkan ke sedikit dalam .bitset

bitref
Referensi formulir x [ i ] ke bit pada posisi i di bitsetx.

Tampilkan Nilai

Referensi ke bit dalam bitset yang ditentukan oleh posisi argumen untuk fungsi anggota pertama, kedua, dan kelima dari referensi kelas, dan true atau false, untuk mencerminkan nilai bit yang dimodifikasi dalam bitset untuk fungsi anggota ketiga dan keempat dari referensi kelas.

Keterangan

reference Kelas hanya ada sebagai kelas pembantu bitsetoperator[]untuk . Kelas anggota menjelaskan objek yang dapat mengakses bit individual dalam bitset. Biarkan b menjadi objek jenis bool, x dan y objek jenis bitset<N>, dan dan ij posisi yang valid dalam objek tersebut. Notasi x [i] mereferensikan bit pada posisi i dalam bitset x. Fungsi anggota kelas reference menyediakan, secara berurutan, operasi berikut:

Operasi Devinisi
x[i] = b bool Menyimpan nilai b pada posisi i bit dalam bitset x.
x[i] = y[j] Menyimpan nilai bit y[ j] pada posisi i bit dalam bitset x.
b = ~ x[i] Menyimpan nilai yang dibalik dari bit x[ i] di boolb.
b = x[i] Menyimpan nilai bit x[ i] di boolb.
x[i]. flip( ) Menyimpan nilai yang dibalik dari bit x[ i] kembali pada posisi i bit di x.

Contoh

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

int main( )
{
   using namespace std;

   bitset<5> b1 ( 2 );
   bitset<5> b2 ( 6 );
   cout << "The initialized bitset<5> b1( 2 ) is: ( "<< b1 << " )."
        << endl;
   cout << "The initialized bitset<5> b2( 6 ) is: ( "<< b2 << " )."
        << endl;

   // Example of x [i] = b storing bool b at bit position i
   // in bitset x
   b1[ 0 ] = true;
   cout << "The bitset<5> b1 with the bit at position 0 set to 1"
        << "is: ( "<< b1 << " )" << endl;

   // Example of x [i] = y [j] storing the bool value of the
   // bit at position j in bitset y at bit position i in bitset x
   b2 [4] = b1 [0];      // b1 [0] = true
   cout << "The bitset<5> b2 with the bit at position 4 set to the "
        << "value\nof the bit at position 0 of the bit in "
        << "bitset<5> b1 is: ( "<<  b2  << " )" << endl;

   // Example of b = ~x [i] flipping the value of the bit at
   // position i of bitset x and storing the value in an
   // object b of type bool
   bool b = ~b2 [4];      // b2 [4] = false
   if ( b )
      cout << "The value of the object b = ~b2 [4] "
           << "of type bool is true." << endl;
   else
      cout << "The value of the object b = ~b2 [4] "
           << "of type bool is false." << endl;

   // Example of b = x [i] storing the value of the bit at
   // position i of bitset x in the object b of type bool
   b = b2 [4];
   if ( b )
      cout << "The value of the object b = b2 [4] "
           << "of type bool is true." << endl;
   else
      cout << "The value of the object b = b2 [4] "
           << "of type bool is false." << endl;

   // Example of x [i] . flip ( ) toggling the value of the bit at
   // position i of bitset x
   cout << "Before flipping the value of the bit at position 4 in "
        << "bitset b2,\nit is ( "<<  b2  << " )." << endl;
   b2 [4].flip( );
   cout << "After flipping the value of the bit at position 4 in "
        << "bitset b2,\nit becomes ( "<<  b2  << " )." << endl;
   bool c;
   c = b2 [4].flip( );
   cout << "After a second flip, the value of the position 4 "
        << "bit in b2 is now: " << c << ".";
}
The initialized bitset<5> b1( 2 ) is: ( 00010 ).
The initialized bitset<5> b2( 6 ) is: ( 00110 ).
The bitset<5> b1 with the bit at position 0 set to 1 is: ( 00011 )
The bitset<5> b2 with the bit at position 4 set to the value
of the bit at position 0 of the bit in bitset<5> b1 is: ( 10110 )
The value of the object b = ~b2 [4] of type bool is false.
The value of the object b = b2 [4] of type bool is true.
Before flipping the value of the bit at position 4 in bitset b2,
it is ( 10110 ).
After flipping the value of the bit at position 4 in bitset b2,
it becomes ( 00110 ).
After a second flip, the value of the position 4 bit in b2 is now: 1.

reset

Mengatur ulang semua bit dalam ke bitset 0 atau mengatur ulang sedikit pada posisi yang ditentukan ke 0.

bitset<N>& reset();
bitset<N>& reset(size_t pos);

Parameter

pos
Posisi bit dalam bitset yang akan direset ke 0.

Tampilkan Nilai

Salinan bitset fungsi anggota yang dipanggil.

Keterangan

Fungsi anggota kedua melemparkan out_of_range pengecualian jika posisi yang ditentukan lebih besar dari ukuran bitset.

Contoh

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

int main( )
{
   using namespace std;

   bitset<5> b1 ( 13 );
   cout << "The set of bits in bitset<5> b1(13) is: ( "<< b1 << " )"
        << endl;

   bitset<5> b1r3;
   b1r3 = b1.reset( 2 );
   cout << "The collection of bits obtained from resetting the\n"
        << "third bit of bitset b1 is: ( "<< b1r3 << " )"
        << endl;

   bitset<5> b1r;
   b1r = b1.reset( );
   cout << "The collecion of bits obtained from resetting all\n"
        << "the elements of the bitset b1 is: ( "<< b1r << " )"
        << endl;
}
The set of bits in bitset<5> b1(13) is: ( 01101 )
The collecion of bits obtained from resetting the
third bit of bitset b1 is: ( 01001 )
The collecion of bits obtained from resetting all
the elements of the bitset b1 is: ( 00000 )

set

Mengatur semua bit dalam ke bitset 1 atau mengatur sedikit pada posisi yang ditentukan ke 1.

bitset<N>& set();

bitset<N>& set(
    size_t pos,
    bool val = true);

Parameter

pos
Posisi bit dalam bitset untuk diatur nilai yang ditetapkan.

val
Nilai yang akan ditetapkan ke bit pada posisi yang ditentukan.

Tampilkan Nilai

Salinan bitset fungsi anggota yang dipanggil.

Keterangan

Fungsi anggota kedua melemparkan out_of_range pengecualian jika posisi yang ditentukan lebih besar dari ukuran bitset.

Contoh

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

int main( )
{
   using namespace std;

   bitset<5> b1 ( 6 );
   cout << "The set of bits in bitset<5> b1(6) is: ( "<< b1 << " )"
        << endl;

   bitset<5> b1s0;
   b1s0 = b1.set( 0 );
   cout << "The collecion of bits obtained from setting the\n"
        << "zeroth bit of bitset b1 is: ( "<< b1s0 << " )"
        << endl;

   bitset<5> bs1;
   bs1 = b1.set( );
   cout << "The collecion of bits obtained from setting all the\n"
        << "elements of the bitset b1 is: ( "<< bs1 << " )"
        << endl;
}
The set of bits in bitset<5> b1(6) is: ( 00110 )
The collecion of bits obtained from setting the
zeroth bit of bitset b1 is: ( 00111 )
The collecion of bits obtained from setting all the
elements of the bitset b1 is: ( 11111 )

size

Mengembalikan jumlah bit dalam objek bitset .

size_t size() const;

Tampilkan Nilai

Jumlah bit, N, dalam bitset<N>.

Contoh

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

int main()
{
    using namespace std;

    bitset<5> b1(6);
    size_t i;

    cout << "The set of bits in bitset<5> b1( 6 ) is: ( "<< b1 << " )"
         << endl;

    i = b1.size();

    cout << "The number of bits in bitset b1 is: " << i << "."
         << endl;
}
The set of bits in bitset<5> b1( 6 ) is: ( 00110 )
The number of bits in bitset b1 is: 5.

test

Menguji apakah bit pada posisi tertentu dalam bitset diatur ke 1.

bool test(size_t pos) const;

Parameter

pos
Posisi bit dalam yang bitset akan diuji untuk nilainya.

Tampilkan Nilai

true jika bit yang ditentukan oleh posisi argumen diatur ke 1; jika tidak, false.

Keterangan

Fungsi anggota melemparkan out_of_range

to_string

bitset Mengonversi objek menjadi representasi string.

template <class charT = char, class traits = char_traits<charT>, class Allocator = allocator<charT> >
   basic_string<charT, traits, Allocator> to_string(charT zero = charT('0'), charT one = charT('1')) const;

Nilai hasil

Objek string kelas basic_string, di mana setiap bit diatur dalam bitset memiliki karakter 1 yang sesuai, dan karakter 0 jika bit tidak diatur.

Contoh

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

int main( )
{
   using namespace std;

   bitset<5> b1 ( 7 );

   cout << "The ordered set of bits in the bitset<5> b1( 7 )"
        << "\n  that was generated by the number 7 is: ( "
        << b1 << " )" << endl;

   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;
}
The ordered set of bits in the bitset<5> b1( 7 )
  that was generated by the number 7 is: ( 00111 )
The string returned from the bitset b1
  by the member function to_string( ) is: 00111.

to_ullong

Mengembalikan unsigned long long nilai yang berisi bit yang sama yang ditetapkan sebagai konten bitset objek.

unsigned long long to_ullong() const;

Nilai hasil

Mengembalikan jumlah nilai bit yang berada dalam urutan bit sebagai unsigned long long. Nilai ini unsigned long long akan membuat ulang bit set yang sama jika digunakan untuk menginisialisasi bitset.

Pengecualian

Melempar objek overflow_error jika ada bit dalam urutan bit memiliki nilai bit yang tidak dapat direpresentasikan sebagai nilai jenis unsigned long long.

Keterangan

Mengembalikan jumlah nilai bit yang berada dalam urutan bit sebagai unsigned long long.

to_ulong

bitset Mengonversi objek ke bilangan bulat yang akan menghasilkan urutan bit yang terkandung jika digunakan untuk menginisialisasi bitset.

unsigned long to_ulong( ) const;

Nilai hasil

Bilangan bulat yang akan menghasilkan bit dalam bitset jika digunakan dalam inisialisasi bitset.

Keterangan

Menerapkan fungsi anggota akan mengembalikan bilangan bulat yang memiliki urutan 1 dan 0 digit yang sama seperti yang ditemukan dalam urutan bit yang terkandung dalam bitset.

Fungsi anggota melempar objek jika ada bit dalam urutan bit memiliki nilai bit yang tidak dapat direpresentasikan overflow_error sebagai nilai jenis unsigned long.

Contoh

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

int main( )
{
   using namespace std;

   bitset<5> b1 ( 7 );

   cout << "The ordered set of bits in the bitset<5> b1( 7 )"
        << "\n  that was generated by the number 7 is: ( "
        << b1 << " )" << endl;

   unsigned long int i;
   i = b1.to_ulong( );
   cout << "The integer returned from the bitset b1,"
        << "\n  by the member function to_long( ), that"
        << "\n  generated the bits as a base two number is: "
        << i << "." << endl;
}
The ordered set of bits in the bitset<5> b1( 7 )
  that was generated by the number 7 is: ( 00111 )
The integer returned from the bitset b1,
  by the member function to_long( ), that
  generated the bits as a base two number is: 7.