gpt4 book ai didi

c++ - 我怎样才能在内存中恰好有 2 位?

转载 作者:太空狗 更新时间:2023-10-29 23:46:54 25 4
gpt4 key购买 nike

我应该能够在数据结构中存储一个值,该值可以从 0 到 3.. 所以我需要 2 位。这个数据结构我会很大 2^16 个位置。所以,我想要 2 ^ 16 * 2(位)。在 C++ 中,您使用的内存中正好有 2 位吗?

最佳答案

每个单元需要两位(而不是三位),因此您可以将四个单元打包成一个字节,或者将 16 个单元打包成一个 32 位整数。

所以你需要一个std::array<uint32_t, 4096>容纳 216 个单位的 2 位值。

您按如下方式访问nth 值:

unsigned int get(std::size_t n, std::array<uint32_t, 4096> const & arr)
{
const uint32_t u = arr[n / 16];
return (u >> (2 * (n % 16))) & 0x3;
}

或者,您可以使用位域:

struct BF32 {
uint32_t u0 : 2;
uint32_t u1 : 2;
//...
uint32_t uF : 2;
}

然后制作一个std::array<BF32, 4096> .

关于c++ - 我怎样才能在内存中恰好有 2 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8279431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com