Комментарии (63)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Suzuya Jūzō
Уровень 46
25 августа 2023, 08:00
Suzuya Jūzō
Уровень 46
28 июня 2023, 14:15
Suzuya Jūzō
Уровень 46
29 мая 2023, 17:00
Suzuya Jūzō
Уровень 46
25 мая 2023, 10:12
В отличие от логических выражений (&& || !=) в побитовых операторах (& | ~) не работает принцип ленивых вычислений (т.е. если при вычислении части выражения ответ уже и так понятен, то остальная часть выражения не вычисляется), абсолютно все вычисления будут проделаны. Это выражение вызовет NullPointerException.
try {
    if (c != null & c.getName() != null) {
    }
} catch (NullPointerException e) {
    c = new C();
    c.setName("C");
}
Suzuya Jūzō
Уровень 46
25 мая 2023, 09:56
Как преобразовать число из X-й системы в Y-ю?
//System.out.println(new BigInteger("число", X).toString(Y));
System.out.println(new BigInteger("1010", 2).toString(16).toUpperCase());
// output: A
Suzuya Jūzō
Уровень 46
25 мая 2023, 09:43
🎎 Хранение различных логических значений в одном числе🎎 В числе int 32 бита, один из них используется для знака, а еще 31 можно использовать для хранения значений 31-й булевской переменной.
//result - это массив с настройками, для работы с битовой маской
        boolean a = false;
        boolean b = true;
        boolean c = false;
        boolean d = false;
        int result = 0;
        if (a) result += 1; //1 == 2 в степени 0 — нулевой бит
        if (b) result += 2; //2 == 2 в степени 1 — первый бит
        if (c) result += 4; //4 == 2 в степени 2 — второй бит
        if (d) result += 8; //8 == 2 в степени 3 — третий бит
        System.out.println(result);// Итого получается число 2 == 0010
        // output: 2
Установка ВКЛ (т.е. 1) 6го бита (отсчет от 0го) числа 2:
System.out.println(result |= 1 << 6);
// сравнение и сразу же присвоение результата переменной result
// 1 << 6 == 1000000
//                or
//      2 == 0000010
// result == 1000010 т.е. 66
// output: 66
Установка ВЫКЛ (т.е. 0) 6го бита (отсчет от 0го) числа 66:
System.out.println(result &= ~(1 << 6));//1 << 6 == 1000000
// сравнение и сразу же присвоение результата переменной result
// ~(1 << 6) == 0111111
//                  and
//        66 == 1000010
//    result == 0000010 т.е. 2
// output: 2
Проверка, ВКЛ ли (т.е. равен 1) 6 бит числа result:
System.out.println(result & 1 << 6);
// Если 0 - то нет, если 1 то равен
// output: 0
Suzuya Jūzō
Уровень 46
24 мая 2023, 17:57
💞Троичная уравновешенная система счисления💞 Троичная уравновешенная система счисления Пример перевода
//74 = - 1 + 3 - 9 + 81
int[] array = new int[] {1, 3, 9, 27, 81, 243, 729, 2187};
        StringBuilder builder = new StringBuilder(number + " =");
        for (int i = 0; i < array.length; i++) {
            if (number % 3 == 1) builder.append(" + " + array[i]);
            else if (number % 3 == 2) {
                builder.append(" - " + array[i]);
                number++;
            }
            number = number / 3;
        }
        System.out.println(builder.toString());