一、c++bitset用法
c++bitset是C++ STL中的一个类,它是一个固定大小的bool数组,可以用来表示某些开关的状态,需要注意的是该数组为定长,而长度不可更改。示例如下:
#include#include using namespace std; int main() { bitset<5> bits1; // 默认初始化,bits1中所有位都为0 bitset<5> bits2(7); // bits2为二进制下的7,即bits2中为“00111” bitset<5> bits3("10101"); // bits3为"10101" cout< <<" "< <<" "< < 上述代码中通过调用不同的构造函数来对bits数组赋值,并且使用cout进行输出。
二、c++bitset中的索引方向
c++bitset中的索引是按照二进制数的高位到低位的顺序排列的,也就是说索引方向是从右到左。在bitset中,比特位的索引是从0开始的,例如bit[0]表示最低位(即最右边的位)。示例如下:
#include#include using namespace std; int main() { bitset<5> bits("10101"); cout< < < < < < 上述代码中的bitset表示二进制数“10101”,并且根据索引顺序输出该二进制数中各个位的值。
三、c++bitset容器
c++bitset主要是用来表示二进制数的,但是它也可以用来表示一些布尔类型的操作,例如对一个布尔型的数组进行操作等。示例如下:
#include#include using namespace std; int main() { bool bArray[5] = {true, false, false, true, false}; bitset<5> bits(bArray); // 将bArray转化为bits数组 cout< <<" "< < 上述代码中的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<8> 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<5> bits("10101"); for(int i = 0; i<5; i++) cout< <<" "; // 输出:1 0 1 0 1 for(int i = 4; i>=0; i--) cout< <<" "; // 输出: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<8> bits("11001010"); cout< <<" "< < 上述代码中,我们使用_Find_first()函数来查找bitset数组中的第一个1所在的位置。