LongerShortString( int encodingHeader, int step ) { this.encodingHeader = encodingHeader; this.mask = Bits.rightOverflowMask( step ); this.step = step; }
public Bits put( long value, int steps ) { int lowLongIndex = writePosition >> 6; // /64 int lowBitInLong = writePosition % 64; int lowBitsAvailable = 64 - lowBitInLong; long lowValueMask = rightOverflowMask( Math.min( lowBitsAvailable, steps ) ); longs[lowLongIndex] |= (value & lowValueMask) << lowBitInLong; if ( steps > lowBitsAvailable ) { // High bits long highValueMask = rightOverflowMask( steps - lowBitsAvailable ); longs[lowLongIndex + 1] |= (value >>> lowBitsAvailable) & highValueMask; } writePosition += steps; return this; }
public long getLong( int steps ) { int lowLongIndex = readPosition >> 6; // 64 int lowBitInLong = readPosition % 64; int lowBitsAvailable = 64 - lowBitInLong; long lowLongMask = rightOverflowMask( Math.min( lowBitsAvailable, steps ) ) << lowBitInLong; long lowValue = longs[lowLongIndex] & lowLongMask; long result = lowValue >>> lowBitInLong; if ( steps > lowBitsAvailable ) { // High bits long highLongMask = rightOverflowMask( steps - lowBitsAvailable ); result |= (longs[lowLongIndex + 1] & highLongMask) << lowBitsAvailable; } readPosition += steps; return result; }
LongerShortString( int encodingHeader, int step ) { this.encodingHeader = encodingHeader; this.mask = Bits.rightOverflowMask( step ); this.step = step; }
public Bits put( long value, int steps ) { int lowLongIndex = writePosition >> 6; // /64 int lowBitInLong = writePosition % 64; int lowBitsAvailable = 64 - lowBitInLong; long lowValueMask = rightOverflowMask( Math.min( lowBitsAvailable, steps ) ); longs[lowLongIndex] |= (value & lowValueMask) << lowBitInLong; if ( steps > lowBitsAvailable ) { // High bits long highValueMask = rightOverflowMask( steps - lowBitsAvailable ); longs[lowLongIndex + 1] |= (value >>> lowBitsAvailable) & highValueMask; } writePosition += steps; return this; }
public long getLong( int steps ) { int lowLongIndex = readPosition >> 6; // 64 int lowBitInLong = readPosition % 64; int lowBitsAvailable = 64 - lowBitInLong; long lowLongMask = rightOverflowMask( Math.min( lowBitsAvailable, steps ) ) << lowBitInLong; long lowValue = longs[lowLongIndex] & lowLongMask; long result = lowValue >>> lowBitInLong; if ( steps > lowBitsAvailable ) { // High bits long highLongMask = rightOverflowMask( steps - lowBitsAvailable ); result |= (longs[lowLongIndex + 1] & highLongMask) << lowBitsAvailable; } readPosition += steps; return result; }