C ++数据结构可容纳128位数据

时间:2019-01-07 06:46:59

标签: c++ data-structures bit-manipulation

我需要一个数据结构来容纳大约120位数据。

我有位操作,例如 type var = 0X01000000000000000000000000000000)>> 120

保存这么长的数据的最佳数据结构是什么?

4 个答案:

答案 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