C++新手关于使用字符串的Bitset操作
C++ Novice regarding Bitset operations with strings
我目前正在学习比特集,在一段话中谈到了它们与字符串的交互:
"字符串和位集的编号约定是相反的:字符串中最右边的字符——具有最高下标的字符——用于初始化位集中的低位——具有下标0的位。">
然而,稍后他们给出了一个示例+图,其中显示了这样的内容:
string str("1111111000000011001101");
bitset<32> bitvec5(str, 5, 4); // 4 bits starting at str[5], 1100
str
的值:
1 1 1 1(1 1 0 0(0 0 0。。。
bitvec5
的值:
…0 0 0 0(1 1 0 0(
这个例子显示它取最右边的位,并把它放在字符串的最后一个元素是位集中的最后一位,而不是第一位。
哪个是对的?(或者两者都错了?(
他们都是对的。
传统上,机器字中的位是从右到左编号的,所以最低的位(位0(在右边,就像它在字符串中一样。
比特集看起来像这个
...1100 value
...3210 bit numbers
和看起来相同的字符串
"1100"
将具有string[0] == '1'
和string[3] == '0'
,完全相反!
string strval("1100"); //1100, so from rightmost to leftmost : 0 0 1 1
bitset<32> bitvec4(strval); //bitvec4 is 0 0 1 1
因此,无论你读到什么都是正确的(文本和示例(:
字符串中最右边的字符--具有最高值的字符subscript—用于初始化位集中的低位—下标为0的位。
相关文章:
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 重载操作程序时出错>>用于类中的字符串 memebr
- 对字符串进行位操作
- 我可以在 C++ 中的函数体之外进行操作吗?
- MPI突然停止了对多个核心的操作
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 对字符数组中的元素执行逐位操作
- 如何在directx/c++中进行平移/缩放操作
- 逐位操作的隐式类型转换
- 为什么一个向量上的多线程操作很慢
- 排序时无法执行交换操作.我做的时候它会崩溃.为什么
- 位移操作和位掩码未检测到重复字符
- 如何进行特定的位操作?
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 字符串操作 - 字符计数
- 此代码中的操作流程是什么?C/C++.
- 复制和交换习惯用法与移动操作之间的交互
- C++新手关于使用字符串的Bitset操作
- 优化bitset操作
- c++中的Bitset操作