Страницы

Поиск по вопросам

среда, 18 декабря 2019 г.

Использование оператора '&'

#java


В HashMap есть метод 

final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { ...}


В котором выполняется проверка на уникальность ключа.
Для определения уникальности используется сравнение чисел оператором &. Соответственно
вопрос:

Что именно выполняет оператор & между двумя числами?

12 & 0 //0
12 & 5 //4
12 & 12 //12
12 & 150 //4
15 & 67888795; //11

    


Ответы

Ответ 1



Это побитовый оператор AND 00101010 42 & 00001111 15 -------------- 00001010 10 Два числа представляются в двоичном виде. Затем оператором & сравниваются каждый бит двух чисел. Как работает оператор AND: если оба числа равны 1, то результат 1, если только один равен единице или оба нуля, то результат 0. Затем обратно из двоичного вида преобразуем в десятичный и получается обычное число.

Ответ 2



Это операция побитового "И". Из вики: Побитовое И — это бинарная операция, действие которой эквивалентно применению логического И к каждой паре битов, которые стоят на одинаковых позициях в двоичных представлениях операндов. Другими словами, если оба соответствующих бита операндов равны 1, результирующий двоичный разряд равен 1; если же хотя бы один бит из пары равен 0, результирующий двоичный разряд равен 0.

Комментариев нет:

Отправить комментарий