1
Следующий код из Elements of Programming Interview о том, как найти четность числа.Неожиданное значение для нахождения четности числа
Соотношение числа должно быть 1, если число в 1 нечетное. В противном случае, он должен быть равен 0.
1011 должен возвращать 1
Но код из книги дает 0 за 1011. Что мне не хватает?
public static short parityBitByBitSmart(long x) {
short result = 0;
while(x != 0) {
result ^= 1;
x &= (x -1);
}
return result;
}
И, я нашел еще один пример кода, с тем же самым неожиданным результатом
public static short parityBitByBit(long x) {
short result = 0;
while(x != 0) {
result ^= (x & 1);
x >>>= 1;
}
return result;
}
ли это игнорирование бит знака?
Нет такой вещи, как «четность числа». Четность может быть определена как нечетная или четная, то есть бит добавляется, чтобы количество бит «1» было нечетным или четным, в зависимости от используемой схемы четности. –