30. Соб. Что такое NaN? Как получить бесконечность в Java? Как проверить, что в результате вычисления получилась бесконечность? Что такое битовая маска? Где применяют битовые маски?

 1. Що таке NaN?

NaN (англ. Not a Number) – числовий тип даних, який встановлюється для «не чисел» (невизначеного результату математичної операції). NaN зазвичай позначає невизначений результат недійсної операції (наприклад 0/0) та нерепрезентативних значень (н-д операція отримання квадратного кореня з від’ємного числа). 

У Java цей стандарт реалізують числові типи з рухомою крапкою double, float. Класи-обгортки цих типів містять константи Double.NaN I Float.NaN відповідно.

В Java також отримується при:

-          Будь-якій операції, де є NaN;

-          Конвертації числа з рядка, в якому є літери;

-          Нескінченність мінус нескінченність;

-          Плюс/мінус нескінченність поділити на плюс/мінус нескінченність;

-          Плюс/мінус нескінченність помножити на нуль.

 

2.  Як отримати нескінченність в Java?

Щоб отримати нескінченність, можна використати константи типу Double:

Double.POSITIVE_INFINITY;

Double.Negative_INFINITY;

А також при операціях:

-          Ділення будь-якого числа з плаваючою крапкою відмінного від нуля на нуль;

-          Множення плюс/мінус нескінченності на плюс/мінус нескінченність;

-          Суми двох нескінченностей.

 

 

3. Як перевірити, що в результаті обчислень утворилась безкінечність?

Вивести результат операції в консоль, використовуючи System.out.println()

 

4. Що таке бітова маска?

Бітова маска – це ціле число, двійковий вигляд якого зберігає масив даних, наприклад бульових значень. Наприклад, число 7  в двійковому вигляді 1101 зберігає значення істини (true) в нульовому, другому та третьому бітах, і значення хиби (false) – у першому біті.

 

5. Де застосовують бітові маски?

Бітові маски застосовують там, де потрібно зберегти великий обсяг інформації в мінімально можливій кількості бітів (IP-адреси, дескриптори файлів).

Наприклад: збереження інформації про обліковий запис користувача в змінній типу int. Int може містити 32 біти інформації. Перші вісім можна відвести для збереження логічної інформації: чи активний обліковий запис? Чи акаунт є преміум? Решту 24 біти можна перетворити в три символи, які будуть ідентифікувати користувача.

 

Коментарі

Популярні дописи з цього блогу

27 Гугл 1 goto. Зарезервовані (ключові) слова. wait не в блоці synchronized. happens-before. BlockingQueue. Методи BlockingQueue

30. Соб-2 Как установить бит в единицу в битовой маске? Как установить бит в ноль в битовой маске? Как получить значение определенного бита в битовой маске? Что такое ленивое вычисление выражения? Чем отличается использование && и & для типа boolean?

28. Соб 1. Какие приоритеты нитей бывают? Можно ли остановить нить, снизив ее приоритет до 0? Зачем нужен класс ThreadGroup? В какой группе нитей состоит main-thread? Что такое паттерн ThreadPool?