你能在任何独立于架构的低级语言中获得更小的整数吗?

Can you get smaller integer in any low level language independent of architecture?

本文关键字:整数 低级语言 任何 独立 于架构      更新时间:2023-10-16

一个整数可以是 8 个字节,即 2^64。很多价值观。

假设我想编写一个小程序,将这样的值存储在文件中:

3 1 5 6 2 8 9 0 1 2 ....

在任何时候,我的价值都不会高于9。所以我只需要 10 种组合,我可以通过仅采用 2^4(16 种组合(的数据类型获得。不是 2^64。

它不是更有效率吗......我怎样才能做到这一点。C++是否具有本机个位数类型。

你可以做这样的类型,但你可能不想这样做。

我建议您使用 unsigned charsigned char ,它们都是单字节类型。 (您可以考虑使用类型别名 std::uint8_tstd::int8_t ,这样可以更好地表达您存储 8 位数字的意图。

可以

创建一个具有单字节数字成员的类,该成员可以存储两个单独的数字,但是您将失去性能,因为操作必须提取您关心的数字,可能移动它,然后在分配给它时进行反向操作。 也就是说,像这样的陈述:

numbers[1] = v;

最终会实现如下内容:

combined_numbers[0] = (combined_numbers[0] & 0x0f) | (v << 4);