Operatoren & Terminierung

sindai

Mitglied
Hallo,

ich arbeite gerade ein paar Übungsklausuren durch und hab ein paar Probleme & Fragen bei denen ihr mir vll. weiterhelfen könntet:

1) Ich komme irgendwie mit diesen "Bitweisen operatoren" (trotz googlen) noch nicht klar, kann mir das mal einer erklären?
Ich soll Typ & Wert eines Ausdrucks angeben:

x = 23;
x ^ 3

Lösung(Typ/Wert): int, 20
Wie kommen die da drauf? Ich weiß nur dass ich die 23 zunächst wohl in eine Bitfolge wandeln muss?! Also 10111. Und dann?

2) Die Bitfolge 11001001 soll den Wert -55 darstellen und dadurch ein Byte-Wert sein. Woher weiß ich dass es nicht 200 ist? Also ein negativer Wert raus kommt?

3) Die Aufgabe ist anzugeben ob der folgende Code terminiert und welche Werte rauskommen:

Java:
a = 2; b = 3;
for (int i = a; i < 5*a; i = i + 2) {
 switch ( i % 3) {
  case 0: a = a - 1; b = b / 2; break;
  case 1: a = a + 1; b = b +1; break;
 }
}
Die Schleife soll terminieren und die Werte sind a = 2, b = 1

Also irgendwie will die Schleife bei mir nicht terminieren ... Das break unterbricht doch nur die Switch-Anweisung , nicht das if oder? Wenn ichs mal kommentiert durchlaufen lasse, werd ich auch nicht schleuer ... https://ideone.com/UFWwH9


4) Ich hab eine rekursive Methode und ich soll unter anderem Sagen ob der Aufruf für alle x <= 0, y <= 0 terminiert. (Antwort ist nein tut es nicht, beispielsweise für (f1,2) soll es nicht terminieren) Die Frage die ich habe ist, wie geht man am Besten an so eine Frage ran? Einfach drauf los Werte eingeben und rumprobieren? Ist in einer Klausur sicherlich aus Zeitgründen eher suboptimal ...

Java:
static int f(int x, int y) {
 if ( x == 0)
  return 2;
 else if ( y <= 1)
  return 1;
 else return f(x-2,y-1)-2*f(x-2,y);
}
 
2) Das erste Bit gibt immer das Vorzeichen an, außer in char. Das ist Vorzeichenlos. (zumindest ist das in Java so)

1) Google doch mal nach Bitverknüpfungen und Bitoperatoren und sag mir dann bitte, um welche Art von Bitoperator es sich bei ^ handelt. 😉

3) Guck dir bitte einmal Erklärungen zur Syntax einer for-Schleife an. Da ist das erklärt. (Tipp: guck mal zwischen den Semikola im Schleifenkopf 😉 )

4) Du guckst dir die Abbruchbedingungen an und guckst dann, welche Fälle nicht abgedeckt sind. Z. B. wenn x ungerade ist, dürfte die Funktion nicht terminieren, weil x immer nur um 2 dekrementiert wird und bei einer ungeraden Zahl wird so nie 0 erreicht.
 

Zurück
Oben