import utilities.FormatierteAusgabe;

/**
Diese Java-Programm verdeutlicht einige Bitoperationen durch
ausführliche Ausgaben.
Das Programm liefert folgende Ausgabe:

Teil von "zahl" wird auf 1 gesetzt
0101 1001 1011 0111     zahl
0000 0011 1111 1000     maske
0101 1011 1111 1111     <<-- zahl | maske
.... ..-- ---- -...
Teil von "zahl" wird auf 0 gesetzt
0101 1001 1011 0111     zahl
0000 0011 1111 1000     maske
1111 1100 0000 0111     ~maske
0101 1000 0000 0111     <<-- zahl & ~maske
.... ..-- ---- -...
Teil von "zahl" wird herausgeschnitten
0101 1001 1011 0111     zahl
0000 0011 1111 1000     maske
0000 0001 1011 0000     <<-- zahl & maske
.... ..-- ---- -...
0000 0000 0011 0110     <<-- zahl & maske um 3 Stellen
                        nach rechts verschoben
0101 1001 1011 0111     zahl
0000 0011 1111 1000     maske
0101 1010 0100 1111     <<-- zahl ^ maske
.... ..-- ---- -...

*/
/*-----------------------------------------------------------------------*/

public class LogBitOperatoren
{
   public static void main(String[] argv)
   {
      int zahl=0x59B7, maske=0X03F8;

      System.out.println("Teil von \"zahl\" wird auf 1 gesetzt");
      FormatierteAusgabe.binaerAusgabe(zahl,16);
      System.out.println("\tzahl");
      FormatierteAusgabe.binaerAusgabe(maske,16);
      System.out.println("\tmaske");
      FormatierteAusgabe.binaerAusgabe(zahl | maske,16);
      System.out.println("\t<<-- zahl | maske");
      System.out.println(".... ..-- ---- -...");

      System.out.println("Teil von \"zahl\" wird auf 0 gesetzt");
      FormatierteAusgabe.binaerAusgabe(zahl,16);
      System.out.println("\tzahl");
      FormatierteAusgabe.binaerAusgabe(maske,16);
      System.out.println("\tmaske");
      FormatierteAusgabe.binaerAusgabe(~maske,16);
      System.out.println("\t~maske");
      FormatierteAusgabe.binaerAusgabe(zahl & ~maske,16);
      System.out.println("\t<<-- zahl & ~maske");
      System.out.println(".... ..-- ---- -...");

      System.out.println("Teil von \"zahl\" wird herausgeschnitten");
      FormatierteAusgabe.binaerAusgabe(zahl,16);
      System.out.println("\tzahl");
      FormatierteAusgabe.binaerAusgabe(maske,16);
      System.out.println("\tmaske");
      FormatierteAusgabe.binaerAusgabe(zahl & maske,16);
      System.out.println("\t<<-- zahl & maske");
      System.out.println(".... ..-- ---- -...");
      FormatierteAusgabe.binaerAusgabe((zahl&maske) >> 3,16);
      System.out.println("\t<<-- zahl & maske um 3 Stellen "+
                  "\n\t\t\tnach rechts verschoben");

      FormatierteAusgabe.binaerAusgabe(zahl,16);
      System.out.println("\tzahl");
      FormatierteAusgabe.binaerAusgabe(maske,16);
      System.out.println("\tmaske");
      FormatierteAusgabe.binaerAusgabe(zahl ^ maske,16);
      System.out.println("\t<<-- zahl ^ maske");
      System.out.println(".... ..-- ---- -...");
   }
}
