c bitset 基本用法

2021-09-13 02:32:32 字數 1249 閱讀 4126

bitset儲存二進位制數字。

bitset就像乙個bool型別的陣列一樣,但是有空間優化——bitset中的乙個元素一般只佔1 bit,相當於乙個char元素所佔空間的八分之一。

bitset中的每個元素都能單獨被訪問,例如對於乙個叫做foo的bitset,表示式foo[3]訪問了它的第4個元素,就像陣列一樣。

bitset有乙個特性:整數型別和布林陣列都能轉化成bitset。

bitset的大小在編譯時就需要確定。如果你想要不確定長度的bitset,請使用(奇葩的)vector

1、建構函式:

#includestd::bitset<4> foo; //建立乙個4位的位集,每一位預設為0

當整數的大小小於位數時,高位填充為0

std::bitset<4> foo(5); //用整數初始化 5二進位制位:101 foo值:0101

當整數的大小超過位數時,從整數二進位制的低位開始賦值,高位被捨棄

std::bitset<4> foo(19); //用整數初始化,19二進位制位:10011 foo值:1100

std::bitset<4> foo(std:;string("0101")); //字串初始化,字串中必須只能含有『0』/『1』

2、常用操作:

位運算都可以用: 與、或、非、異或,左移,右移

foo&foo2

foo|foo2

~foo

foo^foo2

foo<<=2

foo>>=2

foo.size() 返回大小(位數)

foo.count() 返回1的個數

foo.any() 返回是否有1

foo.none() 返回是否沒有1

foo.set() 全都變成1

foo.set(p) 將第p + 1位變成1

foo.set(p, x) 將第p + 1位變成x

foo.reset() 全都變成0

foo.reset(p) 將第p + 1位變成0

foo.flip() 全都取反

foo.flip(p) 將第p + 1位取反

foo.to_ulong() 返回它轉換為unsigned long的結果,如果超出範圍則報錯

foo.to_ullong() 返回它轉換為unsigned long long的結果,如果超出範圍則報錯

foo.to_string() 返回它轉換為string的結果

C bitset用法小結

原文 c 的 bitset 在 bitset 標頭檔案中,它是一種類似陣列的結構,它的每乙個元素只能是 或 每個元素僅用 bit空間。常用函式 bitset 8 foo 10011011 cout foo.count endl 5 count函式用來求bitset中1的位數,foo中共有 個 cou...

C bitset類的使用

因為無知而學習,因為學習而更感無知。在刷題過程中遇到不少的位操作,這裡有必要學習一下c 內建的bitset類。歡迎各位指出文中的錯誤。本文主要內容 1.bitset類的函式使用 2.自己實現的mybitset類 主要參考 c primer include 包含標頭檔案,是標準庫的標頭檔案 inclu...

C bitset學習筆記(超級簡化)

使用bitset需要引用標頭檔案。賦值 include using namespace std bitset 8 s int main o wn test有乙個引數pos,返回乙個bitset內第pos位的值。s.reset s.set 7 int k s.test 7 k is true k s....