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

Muh*_*mer 0 c++ performance data-structures

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

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

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

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

不会更有效率......我怎么能做到这一点.C++是否具有本机单数字类型.

cdh*_*wie 6

你可以制作这样的类型,但你可能不想这样做.

我建议你使用unsigned charor signed char,它们都是单字节类型.(你可以考虑使用类型别名std::uint8_tstd::int8_t,从而更好地表达你的意图来存储8位数字.)

可以使用单字节数字成员创建一个可以存储两个单独数字的类,但是由于操作必须提取您关心的数字,可能会移动它,然后在分配时反向操作,因此您将失去性能.它.也就是说,声明如下:

numbers[1] = v;
Run Code Online (Sandbox Code Playgroud)

最终会被实现如下:

combined_numbers[0] = (combined_numbers[0] & 0x0f) | (v << 4);
Run Code Online (Sandbox Code Playgroud)