这取决于你为什么这样做。通常,您不能使用少于 8 位的类型,因为这是体系结构的可寻址单元。但是,您可以使用结构来定义不同的长度:
struct s {
unsigned int a : 4; // a is 4 bits
unsigned int b : 4; // b is 4 bits
unsigned int c : 16; // c is 16 bits
};
Run Code Online (Sandbox Code Playgroud)
但是,不能保证结构体的长度为 24 位。此外,这可能会导致字节序问题。在可能的情况下,最好使用系统无关类型,例如 uint16_t 等。您还可以使用按位运算符和位移位来非常具体地处理事物。
通常,您只需创建一个表示您感兴趣的数据的结构.如果它是16个字节的数据,要么它是许多较小类型的集合,要么是在处理具有本机16字节整数类型的处理器上.
如果您尝试表示非常大的数字,则可能需要找到一个处理任意大小数字的特殊库.