public class Main {
  public static void main(String[] args) {
    task10();
  }

  static void task10() {
    /*
      Напишите программу с двумя константами: обе константы состоят из чередующихся нулей и единиц, но у одной нулю равен младший бит, а у другой старший (подсказка: константы проще всего определить в шестнадцатеричном виде). Объедините эти две константы всеми возможными поразрядными операторами. Для вывода результатов используйте метод Integer.toBinaryString().
    */

    int const1 = 0xAAAAAAAA;
    int const2 = 0x55555555;

    int bitwise_and = const1 & const2;
    int bitwise_or = const1 | const2;
    int bitwise_xor = const1 ^ const2;
    int bitwise_not = ~const1;

    System.out.println("AND(&): " + Integer.toBinaryString(bitwise_and));
    System.out.println("OR(|): " + Integer.toBinaryString(bitwise_or));
    System.out.println("XOR(^): " +  Integer.toBinaryString(bitwise_xor));
    System.out.println("NOT(~):" + Integer.toBinaryString(bitwise_not));
  }

  static void task9() {
    /* 
      Выведите наибольшее и наименьшее число в экспоненциальной записи для типов float и double.
    */ 

    float max_float = Float.MAX_VALUE;
    double max_double = Double.MAX_VALUE;

    float min_float = Float.MIN_VALUE;
    double min_double = Double.MIN_VALUE;

    System.out.println("Max float value: " + max_float);
    System.out.println("Max double value: " + max_double);

    System.out.println("Min float value: " + min_float);
    System.out.println("Min double value: " + min_double);
  }

  static void task8() {
    /*
      Покажите, что шестнадцатеричная и восьмеричная записи могут использоваться с типом long. Для вывода результатов используйте метод Long.toBinaryString(). 
    */

    long hex = 0x123L;
    long oct = 0123;

    System.out.println(Long.toBinaryString(hex));
    System.out.println(Long.toBinaryString(oct));
  }
}
