ビットストリームのビットに優先順位はありますか(ビットストリームはJavaのInput / OutputStreamにいくらか類似していますが、ビットレベルの粒度を提供します)?
DEFLATEアルゴリズムのハフマンステージの出力では、非バイトをエンコードする目的で、バイトの最下位ビット(lsb)が最上位ビット(msb)の「前」にあると見なされることを読みました。整列された値。msbからlsbの順序ではなく、lsbからmsbの順序を選択する理由はありますか?たとえば、これはどういうわけか、わずかに単純で高速なデコード(またはエンコード)コードを可能にしますか?
Javaの「InputBitStream」クラスがいくつかの基本的な操作を提供すると思います。
class InputBitStream {
// Optimized for reading a SINGLE bit.
public int readSingleBit() {...}
// Optimized for reading large segments of bits,
// not just readSingleBit() -> put in result -> repeat,
// but if possible, shifting in a byte at a time.
public int readMultipleBits(int count) {...}
}
DEFLATEビットパッキング: http ://www.gzip.org/zlib/rfc-deflate.html#packing