public short readSI16() throws IOException {
  synchBits();
  int lowerByte=in.read();
  if (lowerByte < 0) {
    throw new IOException("Unexpected end of input");
  }
  byte[] aByte=new byte[1];
  int count=in.read(aByte);
  if (count < 1) {
    throw new IOException("Unexpected end of input");
  }
  bytesRead+=2;
  return (short)((aByte[0] * 256) + lowerByte);
}

public short readSI16 ( ) throws IOException { synchBits ( ) ; int lowerByte = in . read ( ) ; if ( lowerByte < 0 ) { throw new IOException ( "Unexpected end of input" ) ; } byte [ ] aByte = new byte [ 1 ] ; int count = in . read ( aByte ) ; if ( count < 1 ) { throw new IOException ( "Unexpected end of input" ) ; } bytesRead += 2 ; return ( short ) ( ( aByte [ 0 ] * 256 ) + lowerByte ) ; }
read a signed 16 bit value
