Ан
Андрей

Объясните, пожалуйста, маленький отрывок кода про Хэш-код.

....
public int hashCode()
{
final int prime = 31;
int result = 1;
long temp;
temp = Double.doubleToLongBits(x);
result = prime * result + (int) (temp ^ (temp >>> 32));
temp = Double.doubleToLongBits(y);
result = prime * result + (int) (temp ^ (temp >>> 32));
return result;
}
....

Объясните, пожалуйста, что означает следующее:
- long
- Double.doubleToLongBits(x);
- (int) (temp ^ (temp >>> 32));

ЗАРАНЕЕ СПАСИБО.

ОО
Олеся Оборотова

long temp; - объявление переменной temp целого типа двойного размера
Double.doubleToLongBits(x); - преобразование х к битовому массиву, являющемуся по типу целым числом двойного размера с битами, соответствующими стандартному представлению вещественного числа повышенной точности
(int) (temp ^ (temp >>> 32)); сдвиг битового представления переменной temp вправо на 32 бита и выполнение побитово операции исключающего ИЛИ (сложения по модулю 2) над ним и его исходным значением, после чего приведение результата к типу стандартной целой переменной. Фактически выполняется исключающее ИЛИ над верхней и нижней половинами целого удвоенной точности, после чего тип результата объявляется типом обычного целого числа.

Похожие вопросы
Объясните пожалуйста код программы
Объясните плз суть хэш поиска. поиски в гугле не увенчались успехом
Помогите объяснить код в Delphi:
объясните код нахождения min
Помогите определить тип Хэша
Помогите мне объяснить код программы пожалуйста VB
Какой это язык програмирования? (отрывок кода)
Это на каком языке написано? (отрывок кода)
Объясните как можно сделать код PHP
Объяснить код программы