Oppgave 1
Short-verdien beregnes slik: 5·256 + 6 = 1286.
Oppgave 2
Det enkle først: Den boolske verdien blir true
siden det kun er 0 som gir false
og byte
-verdien
blir -7.
De to bytene som utgjør short
-verdien er -5 og -6. Dette er negative tall og har dermed 1 som fortegnsbit. Regnet uten fortegn
vil de åtte bitene i -5 bli 256 - 5 = 251 og de i -6 bli 256 - 6 = 250. Tar vi de 16 biten som short
-verdien utgjør,
får vi 251·256 + 250 = 64506 uten fortegn. Men med fortegn blir det 64506 - 256·256 = 64506 - 65536 = -1030.
Vi kan gjøre på tilsvarende måte for de fire første bytene. Dermed 255·2563 + 254·2562 + 253·256 + 252 - 2564 = -66052.
Oppgave 3
public static void tabellutskrift(int[][] a, String filnavn) throws IOException { DataOutputStream ut = new DataOutputStream(new FileOutputStream(filnavn)); int m = a.length, n = a[0].length; ut.writeInt(m); ut.writeInt(n); // tabelldimensjonen for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { ut.writeInt(a[i][j]); } } ut.close(); } public static int[][] tabellinnlesing(String filnavn) throws IOException { DataInputStream inn = new DataInputStream(new FileInputStream(filnavn)); int m = inn.readInt(), n = inn.readInt(); int[][] a = new int[m][n]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { a[i][j] = inn.readInt(); } } inn.close(); return a; } public static void main(String[] args) throws IOException { int[][] a = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; // 3 x 4 tabellutskrift(a, "tabell.txt"); int[][] b = tabellinnlesing("tabell.txt"); int m = b.length, n = b[0].length; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { System.out.printf("%3d", b[i][j]); } System.out.printf("\n"); } }