public int decodeNoisyDiff(final int noisybits) {
        int value = 0;
        if (noisybits > 0) {
            value = decodeBits(noisybits) - (1 << (noisybits - 1));
        }
        int val2 = decodeVarBits() << noisybits;
        if (val2 != 0 && decodeBit()) {
            val2 = -val2;
        }
        return value + val2;
    }
decode a signed integer with some of of least significant bits considered
noisy

@see #encodeNoisyDiff
main/src/main/java/cgeo/geocaching/brouter/codec/StatCoderContext.java