gpt4 book ai didi

c++ - 有没有一种方法可以使用 2 位大小的类型而不是 int,只需插入新的类型名称而不是 int?

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:45 24 4
gpt4 key购买 nike

我有一个应用程序需要尽可能多地节省内存。我需要存储大量数据,这些数据可以恰好采用三个可能的值。所以,我一直在尝试使用 2 位大小的类型。

一种可能性是使用位字段。我可以做

struct myType {
uint8_t twoBits : 2;
}

这是来自this thread的建议.

但是,在我之前使用过 int 变量的任何地方,我都需要通过附加 .twoBits 来更改它们的用法。我检查了我是否可以在 struct 之外创建一个位域,例如

uint8_t twoBits : 2;

但是this thread说这是不可能的。但是,该线程特定于 C,因此我不确定它是否适用于 C++。

有没有一种干净的方法可以定义一个 2 位类型,以便通过简单地将 int 替换为我的类型,我可以正确运行程序?还是使用位域是唯一可能的方法?

最佳答案

CPU,以及内存、总线和编译器,都只使用字节或字节组。如果不存储其他 6 个剩余位,则无法存储 2 位类型。

您可以定义一个仅使用某些位的结构。但我们知道它不会节省内存。

如您所知,您可以在一个结构中打包多个 x 位类型。或者您可以执行位操作以将它们打包/解包为整数类型。

关于c++ - 有没有一种方法可以使用 2 位大小的类型而不是 int,只需插入新的类型名称而不是 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50765641/

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