private void nextValue() { // Read value if (in.readBit()) { // else -> same value as before if (in.readBit()) { // New leading and trailing zeros storedLeadingZeros = (int) in.getLong(5); byte significantBits = (byte) in.getLong(6); if(significantBits == 0) { significantBits = 64; } storedTrailingZeros = 64 - significantBits - storedLeadingZeros; } long value = in.getLong(64 - storedLeadingZeros - storedTrailingZeros); value <<= storedTrailingZeros; value = storedVal ^ value; storedVal = value; } }
private void nextValue() { // Read value if (in.readBit()) { // else -> same value as before if (in.readBit()) { // New leading and trailing zeros storedLeadingZeros = (int) in.getLong(5); byte significantBits = (byte) in.getLong(6); if(significantBits == 0) { significantBits = 64; } storedTrailingZeros = 64 - significantBits - storedLeadingZeros; } long value = in.getLong(64 - storedLeadingZeros - storedTrailingZeros); value <<= storedTrailingZeros; value = storedVal ^ value; storedVal = value; } }