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 . |
Operator
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 bitset bitset . |
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 bitset bitset . |
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 N
bitset<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 bitset
bitset
.
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 bitset
bitset
.
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 false
true
.
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 bitset
x
.
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 bitset
operator[]
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 i
j
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 | Definisi |
---|---|
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 bool b . |
b = x [i ] |
Menyimpan nilai bit x [ i ] di bool b . |
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.