public int read(int bitteja) {
		int palautettava = 0;

		// Mikli puskurissa on tll hetkell vhemmn 
		if (bitteja > puskurinKoko) {
			while (bitteja > puskurinKoko) {
				try {
					int luettu = lahde.read();
					// Mikli pyydetty bittimr ei ole jljell palautetaan -1
					if (luettu == -1) {
						return -1;
					}
					bittiPuskuri = bittiPuskuri << 8 | luettu;
					puskurinKoko += 8;
				} catch (IOException ioe) {
					ioe.printStackTrace();
					return -1;
				}
			}
		} else {
			//Muuten palautetaan bittipuskurista suoraan n bitti
			palautettava = bittiPuskuri & BittiOutputStream.BITTIMASKIT[bitteja];
			puskurinKoko -= bitteja;
		}
		palautettava = bittiPuskuri >> puskurinKoko - bitteja;
		puskurinKoko -= bitteja;
		bittiPuskuri = bittiPuskuri & BittiOutputStream.BITTIMASKIT[puskurinKoko];

		return palautettava;
 	}