在C++中,为什么bool需要一个字节来存储true或false,其中只有一个位足够,例如0表示false,1表示true表示?(为什么Java也需要一个字节?)
其次,使用以下内容会更安全多少?
struct Bool {
bool trueOrFalse : 1;
};
Run Code Online (Sandbox Code Playgroud)
第三,即使它是安全的,上述现场技术真的会有所帮助吗?因为我听说我们在那里节省空间,但是编译器生成的代码访问它们比访问基元所生成的代码更大更慢.
连接2个位集的最佳方法是什么?
比如我有
boost::dynamic_bitset<> test1( std::string("1111") );
boost::dynamic_bitset<> test2( std::string("00") );
Run Code Online (Sandbox Code Playgroud)
它们应该连接成一个thrid Bitset test3然后保存
111100
Run Code Online (Sandbox Code Playgroud)
解决方案应该使用boost :: dynamic_bitset.如果解决方案适用于std :: bitset,那也会很好.在连接位时应该关注性能.
更新:我比较了两种方法(来自我和Neil的字体方法以及来自信使的shift方法)和字符串方法更快(因子10 ++).代码在这里:http: //pastebin.com/HfpfYfy8
我希望Pastebin可以发布长代码清单.如果有更好的方法请与我联系.