c++ 中 bitset用法詳解
阿新 • • 發佈:2022-04-19
包含標頭檔案 #include <bitset
bitset類
類模板
template <size_t N> class bitset;
使用bitset必須指定類模板引數N,N表示了bitset的位數。
bitset在記憶體中是以4或8個位元組為單位儲存的
sizeof(bitset<1>) 4
sizeof(bitset<32>) 4
sizeof(bitset<33>) 8
sizeof(bitset<65>) 16
建構函式:
//1.預設建構函式:0 bitset<10> a; //a:0000000000 //2.用一個數值初始化 (1)若數值為正數,直接當作無符號數來處理,若為負數,則用其補碼初始化bitset。(其實正數的補碼也是其本身) (2)若bitset的位數n小於數值的位數,只取數值(小端的)前n位初始化給bitset bitset<4> a(-16); //-16的補碼為11111111.....10000,a有4位,因此a:0000 bitset<5> a(17); //17的補碼為00000000.....10001,a有5位,因此a:10001 bitset<6> a(-8); //-8的補碼為 11111111.....11000,a有6位,因此a:111000 bitset<7> a(8); //8的補碼為 00000000.....01000,a有7位,因此a:0001000 //3.用字串string 或者 char[]初始化 //以string為例,char[]與其用法相同。 string b = "100101111"; bitset<3> a(b); //a:100 bitset<6> a(b); //a:100101 bitset<9> a(b); //a:100101111 bitset<12> a(b); //a:000100101111
運算子過載[],支援下標從0開始訪問,與陣列類似
注意:下標小的是小端
bitset<4> a;
a[0] = 1;
a[2] = 1;
//a:0101
成員函式:
count 返回bitset中 1 的個數
size_t count() const;
size 返回size大小
size_t size() const;
test 返回某一位(下標)是否為1。
bool test (size_t pos) const;
any 只要有一位是1,就返回true,否則返回false
bool any() const;
none 若全為0,返回true,否則返回false
bool none() const;
all 若全為1,返回true,否則返回false
bool all() const noexcept;
set 全部置1,或者某一位置1
bitset& set() noexcept;
bitset& set (size_t pos, bool val = true);
reset 全部置0,或者某一位置0
bitset& reset();
bitset& reset (size_t pos);
flip 全部取反,或者某一位取反
bitset& flip();
bitset& flip (size_t pos);
.to_string( ) 轉換為字串
.to_ulong( ) 轉換為無符號long型別
.to_ullong( ) 轉換為無符號long long型別