bitset是類似於bool數組一樣的東西,但是它的每個位置只佔1bit
可以在向二進制轉換的時候使用,特別是涉及到了負數不好操作的時候
構造:
頭文件; #include<bitset>
<常量>
const size=10;//表示位數 bitset<size>bit; //自動初始化爲0 bitset<size>bit(整數_各種類型都可以); //如果是浮點數會向下取整 bitset<size>bit(string類型的01串);
若未超出size:高位補0
若超出size:整數只取低size位,string串只取前size位
操作
可以直接賦值 bit=123;
可以直接cout<<bit;//將所有數位都輸出
也可以使用下標逐個遍歷,類似於數組
單個bitset對象可以進行移位操作
相同大小的bitset對象之間可以進行按位操作
還有各種內部函數,對於一個叫做bit的bitset:
bit.size() 返回大小(位數)
bit.count() 返回1的個數
bit.any() 返回是否有1
bit.none() 返回是否沒有1
bit.set() 全都變成1
bit.set(p) 將第p + 1位變成1(bitset是從第0位開始的!)
bit.set(p, x) 將第p + 1位變成x
bit.reset() 全都變成0
bit.reset(p) 將第p + 1位變成0
bit.flip() 全都取反
bit.flip(p) 將第p + 1位取反
bit.to_ulong() 返回它轉換爲unsigned long的結果,如果超出範圍則報錯
bit.to_string() 返回它轉換爲string的結果
對於應用實例:
2018年第九屆藍橋杯省賽第二題即考到了向二進制的轉換,使用bitset大大減少了思維量和編碼量