static void shiftLeft(int result[],int source[],int intCount,int count){
  if (count == 0) {
    System.arraycopy(source,0,result,intCount,result.length - intCount);
  }
 else {
    int rightShiftCount=32 - count;
    result[result.length - 1]=0;
    for (int i=result.length - 1; i > intCount; i--) {
      result[i]|=source[i - intCount - 1] >>> rightShiftCount;
      result[i - 1]=source[i - intCount - 1] << count;
    }
  }
  for (int i=0; i < intCount; i++) {
    result[i]=0;
  }
}

static void shiftLeft ( int result [ ] , int source [ ] , int intCount , int count ) { if ( count == 0 ) { System . arraycopy ( source , 0 , result , intCount , result . length - intCount ) ; } else { int rightShiftCount = 32 - count ; result [ result . length - 1 ] = 0 ; for ( int i = result . length - 1 ; i > intCount ; i -- ) { result [ i ] |= source [ i - intCount - 1 ] > > > rightShiftCount ; result [ i - 1 ] = source [ i - intCount - 1 ] << count ; } } for ( int i = 0 ; i < intCount ; i ++ ) { result [ i ] = 0 ; } }
abstractly shifts left an array of integers in little endian ( i . e . shift it right ) . total shift distance in bits is intcount * 32 + count
