1. 程式人生 > 其它 >c++ 中 bitset用法詳解

c++ 中 bitset用法詳解

包含標頭檔案 #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型別