Oppgave 1
int k = -1; int d = 1; System.out.println(k >> d); System.out.println(k >>> d);
Oppgave 2
int k = -1; int d = -1; System.out.println(k >> d); System.out.println(k >> (d & 31));
Oppgave 3
public static void leftshift(int[] a, int d) { if (d < 0) throw new IllegalArgumentException("Negativ parameter!"); if (a.length < 1) return; d %= a.length; for (int i = d; i < a.length; i++) a[i - d] = a[i]; for (int i = a.length - d; i < a.length; i++) a[i] = 0; }
Eksempel på bruk av leftshift
:
int[] a = {0,0,0,0,1,1,1,1}; for (int verdi : a) System.out.print(verdi); // utskrift av a leftshift(a,2); // shift venstre System.out.println(); // linjeskift for (int verdi : a) System.out.print(verdi); // utskrift av a // 00001111 // 00111100
Oppgave 4
public static void rotasjon(char[] a, int d) { int n = a.length; if (n < 2) return; // tomt eller en verdi if ((d %= n) < 0) d += n; if (d <= (n+1)/2) // forskyver d enheter mot høyre { char[] b = Arrays.copyOfRange(a, n - d, n); // hjelpetabell for (int i = n - 1; i >= d; i--) a[i] = a[i - d]; // forskyver System.arraycopy(b, 0, a, 0, d); // kopierer } else // forskyver mot venstre n - d enheter mot venstre { char[] b = Arrays.copyOfRange(a, 0, n - d); // hjelpetabell for (int i = 0; i < d; i++) a[i] = a[i + n - d]; // forskyver System.arraycopy(b, 0, a, d, n - d); // kopierer } }
Oppgave 5
Gitt at du allerede har en bytt
-metode for heltallstabeller, trengs kun å bytte
datatypen på tabellen fra char
til int
:
public static void rotasjon(int[] a, int d) { int n = a.length; if (n < 2) return; // tomt eller en verdi if ((d %= n) < 0) d += n; // motsatt vei? for (int v = 0, h = n - 1; v < h; Tabell.bytt(a, v++, h--)); // snur a[a:n> for (int v = 0, h = d - 1; v < h; Tabell.bytt(a, v++, h--)); // snur a[0:d> for (int v = d, h = n - 1; v < h; Tabell.bytt(a, v++, h--)); // snur a[d:n> }
Oppgave 6
char[] c = "ABCDEFGHIJKLMNOP".toCharArray(); int d = 3; // bruk 1, 5, 7, 9, 11, 13 og 15 char temp = c[0]; // tar vare på verdien i indeks 0 for (int i = -d, j = 0; i != 0; i -= d) // stopper i 0 { if (i < 0) i += 16; // sjekker fortegnet til indeks i c[j] = c[i]; // kopierer j = i; // oppdaterer indeks j } c[d] = temp; // legger tilbake verdien System.out.println(Arrays.toString(c));
Oppgave 7
Utgangspunkt: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P] Med d = 6: [K, B, M, D, O, F, A, H, C, J, E, L, G, N, I, P]