int和float之间的东西比使用float保留更少的内存?

时间:2013-11-15 15:44:54

标签: c++ c memory-management malloc

我需要保存具有下一个表单的(malloc)内存(ram)数据:

34566,5
45,5
46,67
32
-4
58
-43,5
etc

我的意思是,逗号后数据永远不会超过2位数。 不知怎的,我可以保留内存而不使用float类型? 提前谢谢。

3 个答案:

答案 0 :(得分:3)

取决于逗号之前的位数。如果您知道可能值的总数N,那么您将需要ceiling(log2 N)位值才能表示它们全部。由此,您可以找出适合的最小类型。

答案 1 :(得分:0)

如果您真的关心内存,并且如果能够指定存储单个值所需的位数,则可以决定是使用内置类型还是创建自己的类型。我的意思是,如果您需要6位来存储单个值,您可以创建容器,使用3个字节(3x char)存储每4个值。这种封装必须使用位运算符来访问值。

答案 2 :(得分:0)

看起来像16位整数是不够的,所以下一个常用的数据类型是32位整数或浮点数,这意味着在这种情况下可能没有可以节省内存的本机数据类型。您可以想出一个使用较少位的自定义定点类型(例如,24位可能是最简单的;您将数字乘以100乘以三个字节的整数),但总的来说我建议查看方法在运行中压缩整个数据集。