用C++可以存储2bit的数据么?
问题描述:
今天用哈夫曼编码做24位bmp图像的压缩,像素里的RGB已经按频率编好了前缀编码。问题是编好了的前缀码有的较短,不需要一个字节来装,只要几个比特就好了。但是最小的数据类型unsigned char也有一个字节,用它来装编码达不到压缩的效果
答
还有std::bitset
答
实际上对于32bit总线来说一次读取数据的最小单位是4个字节。所以现在的编译器都会按照4字节8字节对齐,使用bit存储节约一点内存但是会让你的程序的性能下降几个数量级。
答
移位运算,再增加一个变量表示存了多少位。