我分配了以下缓冲区,以便在0-1
exclusive:
float *buff = malloc(n* sizeof(float))
但是,我认为在小内存大小分配时,使用float
无法自由选择大n
,例如n=10,000
。由于float的大小为32 bit
,我想知道是否有其他方法可以通过变通方法或选择其他数据类型来减小此大小。
答案 0 :(得分:5)
C没有小于float
的浮点类型。
有几种整数类型可能(但不能保证)小于float
:
signed char
unsigned char
signed short
unsigned short
当然,unsigned
类型不能保留负值,而且其中任何一种都不能包含小数值。
您始终可以定义自己的类型,或者只是将signed char
值(通常位于-128
.. +127
范围内)解释为小数值。我已经看过16位浮点布局,认为它们不是由C或大多数硬件直接支持。
请注意,执行缩放的其他代码的大小可能会超出您保存的数据大小。另一方面,代码和数据大小不一定是可以互换的。
如果我们对您想要表示的值的范围和精度有更多了解,那么回答您的问题要容易得多。
请注意,除非您使用的是小型嵌入式系统,否则分配10,000个float
个对象的数组可能非常简单。除非你确定它是必要的,否则不要在使用较小的类型上花费太多精力。