Oppgave 1
import bitio.BitInputStream; import java.io.*; public class Program { public static void main(String... args) throws IOException { byte[] b = {103,89,110,-27,98,-100}; // bitsekvensen i Figur A.1.1 a) BitInputStream inn = BitInputStream.fromByteArray(b); int k = 3; for (int biter = inn.readBits(k); biter != -1; biter = inn.readBits(k)) { System.out.print(biter + " "); // skriver ut bitene som et heltall } int r = inn.availableBits(); // antall biter som er igjen if (r > 0) System.out.println(inn.readBits(r)); // leser resten inn.close(); // Utskrift: 413 406 953 354 156 } // main } // Progam
Oppgave 2
import bitio.BitInputStream; import java.io.*; public class Program { public static void main(String... args) throws IOException { byte[] b = {103,89,110,-27,98,-100}; // bitsekvensen i Figur A.1.1 a) BitInputStream inn = BitInputStream.fromByteArray(b); int k = inn.readBits(16); // de første 16 bitene k <<= 16; // bitforskyver k |= inn.readBits(16); System.out.println(k); // Utskrift: 1733914341 int filter = -1 >>> 24; // 0000......00011111111 for (int i = 0; i < 4; i++) // fire ganger { System.out.print((byte)(k & filter) + " "); k >>>= 8; } inn.close(); // Utskrift: -27 110 89 103 } // main } // Progam
Hvis en vil lese 31 biter første gang og så 1 bit, må de tre programlinjene endres til:
int k = inn.readBits(31); // de første 31 bitene k <<= 1; // bitforskyver k |= inn.readBits(1);
Oppgave 3
byte[] b = {-1, -1, -1, -1, -1, -1};