Estou lendo o livro Java Puzzlers. No primeiro puzzle é sugerido o seguinte método para determinar se um número é impar ou não:
public static boolean isOdd(int i) {
return (i & 1) != 0;
}
Porém, não entendi por que (i & 1) será sempre diferente de zero caso i seja um número impar.
Tentei deduzir pela representação binária.
Exemplo 1 (número par):
00000010 = 2
&
00000001 = 1
00000000 = 0
Exemplo 2 (número impar):
00000011 = 3
&
00000001 = 1
00000001 = 1
Exemplo 3 (outro número par):
00000100 = 4
&
00000001 = 1
00000000 = 0
Exemplo 4 (outro número impar):
00000101 = 5
&
00000001 = 1
00000001 = 1
Com base nisso, posso entender que o primeiro bit de um número par será sempre igual a 0 e o primeiro bit de um número impar será igual sempre a 1?