public void lshiftMe(int c) throws IllegalArgumentException
	{
		if (c <= 0)
		{
			if (c == 0)
				return; // silly.
			else
				throw new IllegalArgumentException("negative shift count");
		}
		int wordcount = c >> 5;
		int bitcount = c & 0x1f;
		int anticount = 32 - bitcount;
		int t[] = data;
		int s[] = data;
		if (nWords + wordcount + 1 > t.length)
		{
			// reallocate.
			t = new int[nWords + wordcount + 1];
		}
		int target = nWords + wordcount;
		int src = nWords - 1;
		if (bitcount == 0)
		{
			// special hack, since an anticount of 32 won't go!
			System.arraycopy(s, 0, t, wordcount, nWords);
			target = wordcount - 1;
		}
		else
		{
			t[target--] = s[src] >>> anticount;
			while (src >= 1)
			{
				t[target--] = (s[src] << bitcount) | (s[--src] >>> anticount);
			}
			t[target--] = s[src] << bitcount;
		}
		while (target >= 0)
		{
			t[target--] = 0;
		}
		data = t;
		nWords += wordcount + 1;
		// may have constructed high-order word of 0.
		// if so, trim it
		while (nWords > 1 && data[nWords - 1] == 0)
			nWords--;
	}
public void lshiftMe ( int c ) throws IllegalArgumentException { if ( c <= 0 ) { if ( c == 0 ) return ; else throw new IllegalArgumentException ( "negative shift count" ) ; } int wordcount = c > > 5 ; int bitcount = c & 0x1f ; int anticount = 32 - bitcount ; int t [ ] = data ; int s [ ] = data ; if ( nWords + wordcount + 1 > t . length ) { t = new int [ nWords + wordcount + 1 ] ; } int target = nWords + wordcount ; int src = nWords - 1 ; if ( bitcount == 0 ) { System . arraycopy ( s , 0 , t , wordcount , nWords ) ; target = wordcount - 1 ; } else { t [ target -- ] = s [ src ] > > > anticount ; while ( src >= 1 ) { t [ target -- ] = ( s [ src ] << bitcount ) | ( s [ -- src ] > > > anticount ) ; } t [ target -- ] = s [ src ] << bitcount ; } while ( target >= 0 ) { t [ target -- ] = 0 ; } data = t ; nWords += wordcount + 1 ; while ( nWords > 1 && data [ nWords - 1 ] == 0 ) nWords -- ; }
/*
Left shift by c bits.
Shifts this in place.