Por falar em binarios vai uma bem simples ai!
Cade as questoes pessoal?
Ta ficando meio parado aqui…
class Tests {
public static void main (String[] args) {
int x = -3, y = 5;
System.out.println((-x == ~x + 1)+","+(-y == ~y + 1));
System.out.println((y>>1==y>>>1)+","+(x>>1==x>>>1));
}
}
o que acontece?
bah… eu acho que vai dar
false, false
false, false
certo?!
lembrando que >>> altera sinal, e >> não…
nunca tinha visto isso… mas achei legal… não sei se de primeira eu ja acertei isso mas é bem provável que nao entao vou aguardar a resposta!
cya!
é jujo…
não foi de primeira!
mais tentativas?!?!
(sem executar! é claro!)
true, true
true, false
explicação:
+3 = 00000…00011
-3 = 11111…11101
-x == ~x + 1
0…011 == 0…00010 + 1 Verdadeiro
+5 = 0…00101
-5 = 1…11011
-y == ~y + 1
1…11011 == 1…11010 + 1 Verdadeiro
Esta expressão -x == ~x + 1 sempre retorna verdadeiro, para qualquer número pois compara o seu negativo com seu complemento de dois… o que é verdadeiro
y>>1 == y>>>1 Verdadeiro, pois
0…0101 >> 1 == 0…010
0…0101 >>> 1 == 0…010
São equivalentes
x>>1 == x>>>1 Falso, pois
1…101 >> 1 == 1…110
1…101 >>> 1 == 01…110
sempre insere 0 no bit + significativo
copia o bit mais significativo, assim não muda o sinal
[]s
PS: Vou fazer a prova amanha!!! Sexta feira dia 23… falta pouco!!!
…da pra fica doido escovando bit…
:arrg: