Hallo hab mal wieder paar einfache "für mich schwere" Fragen an die Profis hier!
Bitte schaut euch erst die 3 Beispiele an:
Beispiel1
int x, y;
x =1;
y=1;
boolean = x==y?
Hier mache ich einen Adressvergleich
Beispiel2
String x, y;
x ="hallo";
y= "hallo";
boolean = x==y?
Hier geht der Adressvergleich auch
Beispiel 3
String eins,zwei, erg;
System.out.println("String eins>");
eins = Einlesen.LiesString();
System.out.println("String zwei>");
zwei = Einlesen.LiesString();
// Inhalt soll geprüft werden
boolean erg2 = eins.equals(zwei);
System.out.println("Gleicher Inhalt?"+erg2);
Frage:
Warum muss ich in Bsp3 den equals-Bitvergleich nehmen? In Bsp 2 ging es doch auch mit dem einfachen Adressvergleich!
Ok nun folgt eine Übung mit 5 Unteraufgaben. Ich werde meine Fragen innerhalb dieser Unteraufgaben stellen:
public static void main(String[] args) {
int a, b, mask, pos[] = new int[2];
String aussage;
System.out.print("Eingabe für a >");
a = Einlesen.LiesInt();
System.out.print("1. Bitposition >");
pos[0] = Einlesen.LiesInt();
System.out.print("2. Bitposition >");
pos[1] = Einlesen.LiesInt();
mask = 1 << pos[0] | 1 << pos[1];
System.out.println("folgende Eingangsvoraussetzungen sind gegeben");
System.out.print("Bitmuster von a: ");
Ausgeben.binaer(a, 32);
System.out.print("\nBitmuster von mask: ");
Ausgeben.binaer(mask, 32);
System.out.println();
/*Unteraufgabe1
* Das Programm prüft, ob in der Variablen a an den eingegebenen
* Bitpositionen mindestens ein Bit gesetzt ist und gibt einen
* entsprechenden Hinweis aus („Mindestens ein Bit gesetzt“ bzw. „Kein
* Bit gesetzt“).
*/
b = a & mask;
aussage = b != 0 ? "Mindestens ein Bit gesetzt" : "Kein Bit gesetzt";
System.out.println(aussage);
Fragen:
Was bewirkt das "&" bei b = a & mask;?
Ich verstehe nicht ganz was hier geschieht!
und
Warum kann ich nicht folgedes machen?
aussage = mask!=0? "Mindestens ein Bit gesetzt" : "Kein Bit gesetzt";
/*Unteraufgabe2
* Das Programm prüft, ob in der Variablen a beide Bits an den
* eingegebenen Bitpositionen gesetzt sind und gibt einen entsprechenden
* Hinweis aus („Beide Bits gesetzt“ bzw. „Mindestens ein Bit nicht
* gesetzt“).
*/
b = a & mask;
aussage = b == mask ? "beide Bits gesetzt"
: "Mindestens ein Bit nicht gesetzt";
System.out.println(aussage);
Frage:
Fast gleiche Frage wie oben. Warum kann ich nicht aussage = b == mask ? druch aussage = a == mask ? ersetzen.
/*Unteraufgabe3
* Das Programm legt in der Variablen b denjenigen Wert ab, der
* entstünde, wenn man in a beide Bits an den eingegebenen Bitpositionen
* setzen würde und gibt den Wert von b mit geeigneter Beschriftung aus
* (a selbst soll unverändert bleiben).
*/
b = a | mask;
System.out.println("Wert von b = a|mask: " + b);
System.out.print("Bitmuster von b: ");
Ausgeben.binaer(b, 32);
System.out.println();
Frage:
Hier verstehe ich auch nicht warum ich bei b = a | mask das Zeichen | nehmen muss
/*Unteraufgabe4
* Das Programm legt in der Variablen b denjenigen Wert ab, der
* entstünde, wenn man in a beide Bits an den eingegebenen Bitpositionen
* löschen würde und gibt den Wert von b mit geeigneter Beschriftung aus
* (a selbst soll unverändert bleiben).
*/
b = a & ~mask;
System.out.println("Wert von b = a & +mask: " + b);
System.out.print("Bitmuster von b: ");
Ausgeben.binaer(b, 32);
System.out.println();
Frage:
Hier verstehe ich auch nicht warum ich bei b = a & ~mask; das Zeichen ~ nehmen muss
/*Unteraufgabe5
* Das Programm legt in der Variablen b denjenigen Wert ab, der
* entstünde, wenn man in a beide Bits an den eingegebenen Bitpositionen
* invertieren würde und gibt den Wert von b mit geeigneter Beschriftung
* aus (a selbst soll unverändert bleiben).
*/
b = a ^ mask;
System.out.println("Wert von b = a ^ mask: " + b);
System.out.print("Bitmuster von b: ");
Ausgeben.binaer(b, 32);
System.out.println();
Frage:
Hier verstehe ich auch nicht warum ich bei b = a ^ mask; das Zeichen ^ nehmen muss
}
}
Bitte schaut euch erst die 3 Beispiele an:
Beispiel1
int x, y;
x =1;
y=1;
boolean = x==y?
Hier mache ich einen Adressvergleich
Beispiel2
String x, y;
x ="hallo";
y= "hallo";
boolean = x==y?
Hier geht der Adressvergleich auch
Beispiel 3
String eins,zwei, erg;
System.out.println("String eins>");
eins = Einlesen.LiesString();
System.out.println("String zwei>");
zwei = Einlesen.LiesString();
// Inhalt soll geprüft werden
boolean erg2 = eins.equals(zwei);
System.out.println("Gleicher Inhalt?"+erg2);
Frage:
Warum muss ich in Bsp3 den equals-Bitvergleich nehmen? In Bsp 2 ging es doch auch mit dem einfachen Adressvergleich!
Ok nun folgt eine Übung mit 5 Unteraufgaben. Ich werde meine Fragen innerhalb dieser Unteraufgaben stellen:
public static void main(String[] args) {
int a, b, mask, pos[] = new int[2];
String aussage;
System.out.print("Eingabe für a >");
a = Einlesen.LiesInt();
System.out.print("1. Bitposition >");
pos[0] = Einlesen.LiesInt();
System.out.print("2. Bitposition >");
pos[1] = Einlesen.LiesInt();
mask = 1 << pos[0] | 1 << pos[1];
System.out.println("folgende Eingangsvoraussetzungen sind gegeben");
System.out.print("Bitmuster von a: ");
Ausgeben.binaer(a, 32);
System.out.print("\nBitmuster von mask: ");
Ausgeben.binaer(mask, 32);
System.out.println();
/*Unteraufgabe1
* Das Programm prüft, ob in der Variablen a an den eingegebenen
* Bitpositionen mindestens ein Bit gesetzt ist und gibt einen
* entsprechenden Hinweis aus („Mindestens ein Bit gesetzt“ bzw. „Kein
* Bit gesetzt“).
*/
b = a & mask;
aussage = b != 0 ? "Mindestens ein Bit gesetzt" : "Kein Bit gesetzt";
System.out.println(aussage);
Fragen:
Was bewirkt das "&" bei b = a & mask;?
Ich verstehe nicht ganz was hier geschieht!
und
Warum kann ich nicht folgedes machen?
aussage = mask!=0? "Mindestens ein Bit gesetzt" : "Kein Bit gesetzt";
/*Unteraufgabe2
* Das Programm prüft, ob in der Variablen a beide Bits an den
* eingegebenen Bitpositionen gesetzt sind und gibt einen entsprechenden
* Hinweis aus („Beide Bits gesetzt“ bzw. „Mindestens ein Bit nicht
* gesetzt“).
*/
b = a & mask;
aussage = b == mask ? "beide Bits gesetzt"
: "Mindestens ein Bit nicht gesetzt";
System.out.println(aussage);
Frage:
Fast gleiche Frage wie oben. Warum kann ich nicht aussage = b == mask ? druch aussage = a == mask ? ersetzen.
/*Unteraufgabe3
* Das Programm legt in der Variablen b denjenigen Wert ab, der
* entstünde, wenn man in a beide Bits an den eingegebenen Bitpositionen
* setzen würde und gibt den Wert von b mit geeigneter Beschriftung aus
* (a selbst soll unverändert bleiben).
*/
b = a | mask;
System.out.println("Wert von b = a|mask: " + b);
System.out.print("Bitmuster von b: ");
Ausgeben.binaer(b, 32);
System.out.println();
Frage:
Hier verstehe ich auch nicht warum ich bei b = a | mask das Zeichen | nehmen muss
/*Unteraufgabe4
* Das Programm legt in der Variablen b denjenigen Wert ab, der
* entstünde, wenn man in a beide Bits an den eingegebenen Bitpositionen
* löschen würde und gibt den Wert von b mit geeigneter Beschriftung aus
* (a selbst soll unverändert bleiben).
*/
b = a & ~mask;
System.out.println("Wert von b = a & +mask: " + b);
System.out.print("Bitmuster von b: ");
Ausgeben.binaer(b, 32);
System.out.println();
Frage:
Hier verstehe ich auch nicht warum ich bei b = a & ~mask; das Zeichen ~ nehmen muss
/*Unteraufgabe5
* Das Programm legt in der Variablen b denjenigen Wert ab, der
* entstünde, wenn man in a beide Bits an den eingegebenen Bitpositionen
* invertieren würde und gibt den Wert von b mit geeigneter Beschriftung
* aus (a selbst soll unverändert bleiben).
*/
b = a ^ mask;
System.out.println("Wert von b = a ^ mask: " + b);
System.out.print("Bitmuster von b: ");
Ausgeben.binaer(b, 32);
System.out.println();
Frage:
Hier verstehe ich auch nicht warum ich bei b = a ^ mask; das Zeichen ^ nehmen muss
}
}