不存储是数据本身,转而存储该数据与前一个数据之间的差值,来减少数据的存储的空间大小
在面对集中的数据时候压缩效果最好
对稀疏数据压缩效果不好,此时应该采用下面所说的
将其中的数组根据动态计算来算出最大的差值的数据
1、2、3、4、5、6、、、100w
如果按照正常的存储过程,该数据只需要存储
100w\*4\*8 bit 大约3200w bit
如果按照FOR算法
只需要存该数据和前一个数据的差值
1、1、1、1、1、1、、、1
用一个比特即可代表差值的数据
1\*100w bit个字节+1 bit 100w bit
数据存储空间少了32倍左右
如果是不规则的话如何存储
5,227,2,30,15,10
可以分为两组分别为
5,227
8bit(记录的数据存储的bite位数) 8bit+8bit(存储两个数据的比特位数)
2,30,15,10
8bit(记录存储数据的bite位数)+(5\*4bit)(存储字节的数据)~3Byte #为何是3Byte,不足的数据用0来部委补到相应的位置
最后占用的字节数为1+2+1+3=7Byte
存储位数的计算,程序是通过动态计算得出的,而此处是依照最大一个数据需要的位数存储的
分组分的太多可能会造成存储额外的开销,同时在解码过程中也不利于程序的解码
评论