#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.
Комментариев нет:
Отправить комментарий