我需要一个数据结构来容纳大约120位数据。
我有位操作,例如 type var = 0X01000000000000000000000000000000)>> 120
保存这么长的数据的最佳数据结构是什么?
答案 0 :(得分:5)
除非您使用这些位指定确切的内容,否则std::bitset
可能是最好的选择。
此外,gcc和clang在某些目标上支持unsigned __int128
。不过,这是非标准的。
答案 1 :(得分:3)
您可以使用std::bitset
。它具有为其定义的运算符operator<<
,operator>>
。
一个最小的例子:
#include <iostream>
#include <bitset>
int main()
{
std::bitset<120> b("01000000000000000000000000000000");
std::cout << "initial value: " << b << '\n';
b >>= 12;
std::cout << "final value: " << b << '\n';
}
您可以观看演示here。
答案 2 :(得分:1)
保存这么长的数据的最佳数据结构是什么?
选项1:
struct MyType { uint8_t data[16]; };
选项2:
struct MyType { uint16_t data[8]; };
选项3:
struct MyType { uint32_t data[4]; };
选项4:
struct MyType { uint64_t data[2]; };
选项5:
struct MyType { std::bitset<128> data; };
很难知道哪一个最能满足您的需求而又不了解它们。
答案 3 :(得分:0)
有什么理由避免使用std::bitset
?
csv