diff options
Diffstat (limited to 'CPP/7zip/Compress/RangeCoder/RangeCoder.h')
-rwxr-xr-x | CPP/7zip/Compress/RangeCoder/RangeCoder.h | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/CPP/7zip/Compress/RangeCoder/RangeCoder.h b/CPP/7zip/Compress/RangeCoder/RangeCoder.h index bbb2ba82..0a6b4064 100755 --- a/CPP/7zip/Compress/RangeCoder/RangeCoder.h +++ b/CPP/7zip/Compress/RangeCoder/RangeCoder.h @@ -71,13 +71,12 @@ public: Low = (UInt32)Low << 8; } - void EncodeDirectBits(UInt32 value, int numTotalBits) + void EncodeDirectBits(UInt32 value, int numBits) { - for (int i = numTotalBits - 1; i >= 0; i--) + for (numBits--; numBits >= 0; numBits--) { Range >>= 1; - if (((value >> i) & 1) == 1) - Low += Range; + Low += Range & (0 - ((value >> numBits) & 1)); if (Range < kTopValue) { Range <<= 8; |