我正在寻找对二进制字符串的一些 STL 支持。bitset似乎非常有用,但是我无法成功地操作各个位。
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
string b = bitset<8>(128).to_string();
for(auto &x:b)
{
x = 1 and x-'0' ; cout<<b<<"\n";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
那么,我应该使用 vector 还是 bitset 来操作单个位?
上面的程序给出:
?0000000
? 000000
? 00000
? 0000
? 000
? 00
? 0
?
Run Code Online (Sandbox Code Playgroud)
我知道发生这种情况是因为我正在操作 char,当设置为 0 时会打印关联的 ascii 字符。我的问题是我可以遍历一个位集并同时修改单个位吗?
例如我肯定不能在下面做:
#include <iostream>
#include <string>
#include <bitset>
int main ()
{
std::bitset<16> baz (std::string("0101111001"));
std::cout << "baz: " << baz << …Run Code Online (Sandbox Code Playgroud) 请考虑以下用于整数类型的代码:
template <class T>
std::string as_binary_string( T value ) {
return std::bitset<sizeof( T ) * 8>( value ).to_string();
}
int main() {
unsigned char a(2);
char b(4);
unsigned short c(2);
short d(4);
unsigned int e(2);
int f(4);
unsigned long long g(2);
long long h(4);
std::cout << "a = " << +a << " " << as_binary_string( a ) << std::endl;
std::cout << "b = " << +b << " " << as_binary_string( b ) << std::endl;
std::cout << "c = …Run Code Online (Sandbox Code Playgroud) 我尝试BitSet在java中学习集合.我已经读过它使用里面的位.
位集的每个*分量都具有{@code boolean}值
我写了一个小应用程序:
BitSet bitSet = new BitSet();
bitSet.set(9);
bitSet.set(5);
bitSet.set(3);
System.out.println(bitSet);
System.out.println(Arrays.toString(bitSet.toByteArray()));
Run Code Online (Sandbox Code Playgroud)
我想知道我可以将值与1和0区分开来.
另外我不明白输出:
{3, 5, 9}
[40, 2]
Run Code Online (Sandbox Code Playgroud)
请解释一下这个系列的用法?