/*
Datei............: Aufg0408.java
Projekt..........: Einführung in die Java-Programmierung
Erstellt.........: 18.10.97, Guido Krüger
Geändert.........: --
Aufgabe..........: Musterlösung zu Aufgabe 04.08
Kommentare.......:

Der Unterschied besteht in der Behandlung des Vorzeichenbits
(also des Bits an der höchstwertigen Stelle der Binärdarstellung)
des ersten Operators. Handelt es sich um eine positive Zahl, so 
verhalten sich >> und >>> vollkommen gleich. Handelt es sich dagegen
um eine negative Zahl, so bleibt dieses bei >> erhalten, während
es bei >>> auf 0 gesetzt (und so das Ergebnis positiv) wird.

Das nachfolgende Listing verdeutlicht dies beispielhaft (die
Methode toBin gibt eine Ganzzahl in Binärdarstellung aus und
dient der besseren Veranschaulichung).
*/
public class Aufg0408
{
  public static void main(String args[])
  {
    System.out.println(" 77 >>  2 = " + ( 77 >>  2));
    System.out.println(" 77 >>> 2 = " + ( 77 >>> 2));
    System.out.println("-77 >>  2 = " + (-77 >>  2));
    System.out.println("-77 >>> 2 = " + (-77 >>> 2));
    System.out.println();
    System.out.println(toBin( 77      ) + " = "  + ( 77      ));
    System.out.println(toBin(-77      ) + " = "  + (-77      ));
    System.out.println(toBin( 77 >>  2) + " = "  + ( 77 >>  2));
    System.out.println(toBin(-77 >>  2) + " = "  + (-77 >>  2));
    System.out.println(toBin(-77 >>> 2) + " = "  + (-77 >>> 2));
  }

  static String toBin(int num)
  {
    String ret = "";
    for (int i = 0; i < 32; ++i) {
      int digit = (num >> (31 - i)) & 1;
      ret += digit;
    }
    return ret;
  }
}

