Вчера был на собеседовании и надо было одним предложением ответить что делает эта функция. Я пробовал разобраться, но что-то пока не очень густо. Подскажите, что делает эта функция?) (100%-ю правильность кода гарантировать не могу, потому что писал по памяти)
public static int func(int a) {
int count = 0;
if((a & 0x80000000) == 0)
count++;
while ((a & 0x7ffffff) != 0x7ffffff){
a = a | (a + 1);
count++;
}
return count;
}
2. Цикл с проверкой на принадлежность параметра к максимальному положительному целому. И считает, так называемые, числа Мерсенна. В a содержится максимальное число Мерсенна, в count — их количество.
3. Возвращает количество этих чисел.
P.S. В коде опечатка, максимальное положительное целое в шестнадцатеричной системе счисления это 0x7fffffff. И я думаю, что первое условие не имеет смысла. (: