

import javax.swing.JOptionPane;

public class Uebung4
{

  public static void main( String args[])
  {
    //    1.) Verändern Sie dieses Programm so, dass es kompilierbar wird.
    /*
      2.)
      Geben Sie die Wertebereiche der folgenden Datentypen an:
      (Wieviel bit werden jeweils für die Darstellung benötigt?)
      byte    : 8 bit  / -128 - +127
      short   : 16 bit / -32768 - +32767
      int     : 32 bit / -2^31 - +2^31-1
      long    : 64 bit / -2^63 - +2^63-1
      float   : 32 bit / -2^128 - +2^128
      double  : 64 bit / -2^1024 - +2^1024
      char    : 16 bit / \u0000 - \uFFFF
      boolean : 8 bit  / true, false
    */

    /*
      3.)
      Der folgende Quelltextblock gibt die Daten für den Typ byte aus.
      Ergänzen Sie die fehlenden Stellen und erstellen Sie ähnliche Ausgaben
      für die anderen Datentypen.
      (Was für einen Datentyp liefert die Funktion pow?)
    */

    String ausgabe ="";
    ausgabe += "byte:";
    ausgabe += "\n";
    ausgabe += "Verwendete bit: ";
    ausgabe += "8 bit";                    // hier die benötigten bit eintragen
    ausgabe += "\n";
    ausgabe += "Wertebereich von ";
    ausgabe += Math.pow(-2,7);         // hinter das Komma die Potenz eintragen
    ausgabe += "  bis  ";
    ausgabe += Math.pow(2,7)-1;       // dito
    JOptionPane.showMessageDialog(null,ausgabe);


    String ausgabe_short ="";
    ausgabe_short += "short:";
    ausgabe_short += "\n";
    ausgabe_short += "Verwendete bit: ";
    ausgabe_short += "16 bit";                    // hier die benötigten bit eintragen
    ausgabe_short += "\n";
    ausgabe_short += "Wertebereich von ";
    ausgabe_short += Math.pow(-2,15);         // hinter das Komma die Potenz eintragen
    ausgabe_short += "  bis  ";
    ausgabe_short += Math.pow(2,15)-1;       // dito
    JOptionPane.showMessageDialog(null,ausgabe_short);

    String ausgabe_int ="";
    ausgabe_int += "int:";
    ausgabe_int += "\n";
    ausgabe_int += "Verwendete bit: ";
    ausgabe_int += "32 bit";                    // hier die benötigten bit eintragen
    ausgabe_int += "\n";
    ausgabe_int += "Wertebereich von ";
    ausgabe_int += Math.pow(-2,31);         // hinter das Komma die Potenz eintragen
    ausgabe_int += "  bis  ";
    ausgabe_int += Math.pow(2,31)-1;       // dito
    JOptionPane.showMessageDialog(null,ausgabe_int);

    String ausgabe_long ="";
    ausgabe_long += "long:";
    ausgabe_long += "\n";
    ausgabe_long += "Verwendete bit: ";
    ausgabe_long += "64 bit";                    // hier die benötigten bit eintragen
    ausgabe_long += "\n";
    ausgabe_long += "Wertebereich von ";
    ausgabe_long += Math.pow(-2,63);         // hinter das Komma die Potenz eintragen
    ausgabe_long += "  bis  ";
    ausgabe_long += Math.pow(2,63)-1;       // dito
    JOptionPane.showMessageDialog(null,ausgabe_long);

    String ausgabe_float ="";
    ausgabe_float += "float:";
    ausgabe_float += "\n";
    ausgabe_float += "Verwendete bit: ";
    ausgabe_float += "32 bit";                    // hier die benötigten bit eintragen
    ausgabe_float += "\n";
    ausgabe_float += "Wertebereich von ";
    ausgabe_float += Math.pow(-2,128);         // hinter das Komma die Potenz eintragen
    ausgabe_float += "  bis  ";
    ausgabe_float += Math.pow(2,128);       // dito
    JOptionPane.showMessageDialog(null,ausgabe_float);

    String ausgabe_double ="";
    ausgabe_double += "double:";
    ausgabe_double += "\n";
    ausgabe_double += "Verwendete bit: ";
    ausgabe_double += "64 bit";                    // hier die benötigten bit eintragen
    ausgabe_double += "\n";
    ausgabe_double += "Wertebereich von ";
    ausgabe_double += Math.pow(-2,1023);         // hinter das Komma die Potenz eintragen
    ausgabe_double += "  bis  ";
    ausgabe_double += Math.pow(2,1023);       // dito
    JOptionPane.showMessageDialog(null,ausgabe_double);

    /*
      4.)
      In dem folgenden Programmblock wird eine Variable immer wieder verdoppelt
      und dann ausgegeben....
      Untersuchen Sie, wie oft das mit den jeweiligen (ganzzahligen) Datentypen
      möglich ist
      (Wie kann man das zählen?)
    */
    System.out.println("Aufgabe 4");
    
    byte test = 1;
    test *= 2;
    System.out.println(test);
    test *= 2;
    System.out.println(test);
    test *= 2;
    System.out.println(test);
    test *= 2;
    System.out.println(test);
    test *= 2;
    System.out.println(test);
    test *= 2;
    System.out.println(test);
    test *= 2;
    System.out.println("6x moeglich --> Ende");    
    System.out.println(test);
    test *= 2;
    System.out.println(test);
    test *= 2;
    System.out.println(test);
    test *= 2;
    System.out.println(test);

    /*
       5.)
       Untersuchen Sie den Datentypen double :
       Was tut die Funktion Math.exp(   ) ?
       Vermutlich wird auch der Wertebereich von double beschränkt sein,-
       erhöhen Sie daher den Wert der Variablen solange, bis irgendetwas
       'falsch läuft'.
       Ab welchem Wert vermuten Sie den ersten Fehler?

    */
    System.out.println("Aufgabe 5");

    double wert = 32 ;
    System.out.println(Math.exp(wert ));
    
    /*
      6.)
      Erklären Sie die Funktion der folgenden Operatoren:
      +   :
      -   :
      *   :
      /   :
      =   :
      ==  :
      +=  :
      -=  :
      *=  :
      /=  :
      
      &   :
      &&  :
      |   :
      ||  :
      
      Untersuchen Sie die Funktionsweise diese Operatoren mit Hilfe eigener
      Programmbeispiele:
    */
    

    ausgabe ="";
    ausgabe += "25 | 12 : ";
    ausgabe += 25|12;
    ausgabe += "\n";
    ausgabe += "25 & 12 : ";
    ausgabe += 25&12;
    ausgabe += "\n";

    JOptionPane.showMessageDialog(null,ausgabe);
    
    //... noch aufräumen:
    System.exit(0);
    
  
 } 
}



