Uma de operadores

Qual a saida pra este código?

[code]

class Test {
public static void main(String[] args) {
for (int n=0; n<5000; n++)
if ((n & -n) == n)
System.out.println(n);
}
}[/code]

Acho que só imprimir uma vez (quando n for zero)
Saída: 0

bem estranha, mas acho q naum imprime só o 0. pelo menos o 1 também será impresso. 11111111 & 00000001 == 00000001. Aí tem q ir fazendo em cada número. Acho q é isso…
:?:

depois de 0 e 1 o AND SOBRE BITS do if só exibirá os exponenciais de 2
até o mais próximo de 5000 2^12 q é 4096.

[quote=“Ironlynx”]depois de 0 e 1 o AND SOBRE BITS do if só exibirá os exponenciais de 2
até o mais próximo de 5000 2^12 q é 4096.[/quote]

Os exponenciais de 2 devem cair nessa regra do 1. por exemplo:

11111000 = -8;

mas os q naum saum exponenciais, naum necessariamente tem seus valores negativos totalmente precedidos de 1ns. oq vcs acham?