首页 > 解决方案 > 奇怪的数据类型 - C++

问题描述

我知道这听起来像一个愚蠢的问题,但我想知道是否有可能以任何方式制作这样的自定义变量大小,而不是使用普通的 8、16、32 和 64 位整数:

uint15_t var; //as an example

我在网上做了一些研究,但没有发现适用于所有尺寸的东西(只有12 位和 24 位之类的东西)。(我还想知道位域是否也适用于其他数据大小)。

是的,我知道您可以使用 16 位整数来存储 15 位值,但我只是想知道是否有可能做这样的事情。

如何制作和实现自定义整数大小?

标签: c++uint

解决方案


在结构或类中,可以使用位域功能为成员变量声明所需大小的整数:

unsigned int var : 15;

...它的 CPU 效率不是很高(因为编译器必须在对该变量的大多数访问上生成按位操作),但它会给您提供所需的 15 位行为。


推荐阅读