C ++位有趣的事实?
C++编程语言在c++标准模板库中定义了一个名为bitset的容器。使用该位集容器是为了在位级别上对元素进行操作,即变量的每个位都为位,即给定值的二进制转换。
1.位集就像一个字符串-位集是位的容器(仅0和1有效)。您可以使用由位集的起始索引值和要考虑的元素数指定的任意位集来创建位集,即可以从位集的索引1开始创建具有2个元素的位集,并将其附加到元素集的末尾。位。
示例-我们需要从位字符串01001110的索引值2开始增加4个元素。此位集将包含元素0011,该元素将附加到位集的末尾。因此,此方法定义的8位比特集的值为00000011。
示例
#include <bitset> #include <string> #include <iostream> int main() { std::string bit_string = "10010110"; std::bitset<8> b1(bit_string, 1 , 4); std::cout << b1 << '\n' ; return 0; }
输出结果
00000010
2.从字符串构造位集-如果您的字符串仅包含创建时使用的两种类型的值。您可以将此字符串转换为将值视为各自的0/1表示的位集。
让我们举个例子来更好地理解这个概念,
我们有一个字符串'xyxxyyx',考虑到x=0和y=1,由此我们可以创建一个长度与数组相同的位集。该位集创建为0100110。
库中定义了一个构造函数来执行此任务-
bitset(str, offSet, size, zeroVal , oneVal) ;
这是一个定义为创建位集的构造函数。让我们深入研究构造函数,并了解构造函数的每个参数传达的内容。
str-创建位集时要考虑的字符串。
offSet-字符串的字符串索引。
大小-要创建的位集的大小。
zeroVal-将被视为0的字符串的值
oneVal-将被视为1的字符串的值]
示例
#include <bitset> #include <string> #include <iostream> using namespace std; int main() { string bitstr = "xyxxyyyx"; bitset<8> bits(bitstr, 0, bitstr.size(), 'x', 'y'); cout <<"The bitset is : "<< bits << '\n'; }
输出结果
The bitset is: 01001110
3.将位集转换为字符串-在位集中,有一个将位集转换为字符串的函数。函数to_string()用于将位集的值存储到字符串中。字符串的长度与位集的长度相同。
将位集中的元素存储到字符串中的顺序与位集顺序相同,即位集的第一个元素为字符串的第一个元素。
01010100的字符串转换为“01010100”。
通过在方法的参数列表中指定,可以用任何字母替换0和1。这只是我们在构建位集时学到的知识的反面。
示例
#include <iostream> #include <bitset> using namespace std; int main() { bitset<8> b(19); cout<<"The value of the bitset is : "<<b<<endl; cout<<"The string conversion of the bitset is : "<<b.to_string()<<endl; cout<<"The string conversion by replacing 0 with T and 1 with P is : "; cout<< b.to_string('T', 'P')<<endl; }
输出结果
The value of bitset is : 00010011 The string conversion of bitset is : 00010011 string conversion by replacing 0 with T and 1 with P is : TTTPTTPP
在位集上还有许多其他操作。还有一些位运算符也可以使用。这些是此处讨论的位集的基本功能和属性。