我需要保存(malloc)内存(ram)数据谁有下一个形式:
34566,5
45,5
46,67
32
-4
58
-43,5
etc
我的意思是,数据在逗号后永远不会超过 2 位数字。不知何故,我可以在不使用浮点类型的情况下保留内存?提前谢谢。
取决于逗号前的位数。 如果您知道可能值的总数 N,那么您将需要 ceiling(log2 N) 位值才能表示它们。 由此,您可以找出适合的最小类型。
如果您真的关心内存并且能够指定存储单个值的确切位数,则可以决定是使用内置类型还是创建自己的类型。我的意思是,例如,如果您需要 6 位来存储单个值,您可以制作使用 4 个字节(3x char)存储每 3 个值的容器。此类包含器必须使用位运算符来访问值。
看起来 16 位整数是不够的,因此下一个常用的数据类型是 32 位整数或浮点数,这意味着在这种情况下可能没有本机数据类型可以节省内存。你可以想出一个使用更少位的自定义定点类型(例如,24位可能是最简单的;你会将乘以100的数字存储在三个字节的整数中),但总的来说,我建议寻找动态压缩整个数据集的方法。