一、c++bitset用法
c++bitset是C++ STL中的一個類,它是一個固定大小的bool數組,可以用來表示某些開關的狀態,需要注意的是該數組為定長,而長度不可更改。示例如下:
#include #include using namespace std; int main() { bitset bits1; // 默認初始化,bits1中所有位都為0 bitset bits2(7); // bits2為二進制下的7,即bits2中為「00111」 bitset bits3("10101"); // bits3為"10101" cout<<bits1<<" "<<bits2<<" "<<bits3<<endl; return 0; } // 輸出為:00000 00111 10101
上述代碼中通過調用不同的構造函數來對bits數組賦值,並且使用cout進行輸出。
二、c++bitset中的索引方向
c++bitset中的索引是按照二進制數的高位到低位的順序排列的,也就是說索引方向是從右到左。在bitset中,比特位的索引是從0開始的,例如bit[0]表示最低位(即最右邊的位)。示例如下:
#include #include using namespace std; int main() { bitset bits("10101"); cout<<bits[0]<<bits[1]<<bits[2]<<bits[3]<<bits[4]<<endl; // 輸出:10101 return 0; }
上述代碼中的bitset表示二進制數「10101」,並且根據索引順序輸出該二進制數中各個位的值。
三、c++bitset容器
c++bitset主要是用來表示二進制數的,但是它也可以用來表示一些布爾類型的操作,例如對一個布爾型的數組進行操作等。示例如下:
#include #include using namespace std; int main() { bool bArray[5] = {true, false, false, true, false}; bitset bits(bArray); // 將bArray轉化為bits數組 cout<<bits<<" "<<bits.count()<<endl; // 輸出:10010 2 return 0; }
上述代碼中的bArray為一個bool型數組,經過bitset構造函數的轉化之後,將其轉化為一個bitset類型的數組,再使用.count()函數來計算其中1的個數。
四、c++bitset轉16進制
在c++中,將bitset類型轉化為16進制是十分常見的操作,使用bitset的to_ulong()函數可以將bitset轉為unsigned long類型,而unsigned long類型的數又可以通過printf來進行16進制輸出。示例如下:
#include #include using namespace std; int main() { bitset bits("11001010"); printf("%02lx\n", bits.to_ulong()); // 輸出:CA return 0; }
上述代碼中的bitset表示二進制數「11001010」,使用.to_ulong()函數將其轉化為unsigned long類型,然後使用printf以16進制輸出該unsigned long類型的數值。其中%02lx的含義為:02表示最少要輸出兩個字符,不夠兩個字符則用0來補齊,l表示輸出unsigned long類型,x表示輸出16進制。
五、c++bitset中的索引
c++bitset數組是從0開始索引的,如果需要從右到左進行索引,可以使用.size()-1-i的方式進行索引。示例如下:
#include #include using namespace std; int main() { bitset bits("10101"); for(int i = 0; i<5; i++) cout<<bits[i]<=0; i--) cout<<bits[bits.size()-1-i]<<" "; // 輸出:1 0 1 0 1 return 0; }
上述代碼中,我們使用兩種不同的方式來從左到右輸出bitset數組中的元素值和從右到左輸出數組元素值。
六、c++bitset查找第一個1
c++bitset中提供了一個函數來查找其中第一個1的位置。該函數返回一個字符串,由「0」和「1」組成,其中只有最後一個1前面的所有位置都是0。示例如下:
#include #include using namespace std; int main() { bitset bits("11001010"); cout<<bits<<" "<<bits._Find_first()<<endl; // 輸出:11001010 1 return 0; }
上述代碼中,我們使用_Find_first()函數來查找bitset數組中的第一個1所在的位置。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/196307.html