private void compressValue(long value) { // TODO Fix already compiled into a big method long xor = storedVal ^ value; if(xor == 0) { // Write 0 out.skipBit(); } else { int leadingZeros = Long.numberOfLeadingZeros(xor); int trailingZeros = Long.numberOfTrailingZeros(xor); // Check overflow of leading? Can't be 32! if(leadingZeros >= 32) { leadingZeros = 31; } // Store bit '1' out.writeBit(); if(leadingZeros >= storedLeadingZeros && trailingZeros >= storedTrailingZeros) { writeExistingLeading(xor); } else { writeNewLeading(xor, leadingZeros, trailingZeros); } } storedVal = value; }
private void compressValue(long value) { // TODO Fix already compiled into a big method long xor = storedVal ^ value; if(xor == 0) { // Write 0 out.skipBit(); } else { int leadingZeros = Long.numberOfLeadingZeros(xor); int trailingZeros = Long.numberOfTrailingZeros(xor); // Check overflow of leading? Can't be 32! if(leadingZeros >= 32) { leadingZeros = 31; } // Store bit '1' out.writeBit(); if(leadingZeros >= storedLeadingZeros && trailingZeros >= storedTrailingZeros) { writeExistingLeading(xor); } else { writeNewLeading(xor, leadingZeros, trailingZeros); } } storedVal = value; }