C++ 中的 23 位用户定义类型

23 bit user defined type in c++

我想知道是否可以在 C++ 中创建 23 位用户定义类型。我可以使用 3 个字符创建一个 24 位类型,但是我试图减少一点。有什么建议吗?

您可以使用位域。

struct TwentyThreeBits {
    int x : 23;

    TwentryThreeBits & operator = (int y) {
        x = y;
        return *this;
    }
};

这允许您将成员 x 作为 23 位值进行操作。该类型的实际大小可能更大(可能 sizeof(TwentyThreeBits) 至少 sizeof(int))。

如果您想表示许多只占用 23 位的项目,您可以创建一个位数组(使用 vector<bool>bitset)并将 23 的正确倍数访问到该数组到达 "object".