[quote=“Dennys”]hum…
mesmo assim o que vc colocou
está errado… o certo seria
1010 >> 1 = 101
Entendeu o que eu tentei explicar?
Atn.
Dennys Fredericci[/quote]
Dennys, só pra reforçar:
o q o matheus tentou explicar em:
1010 >> 1 = 1101
estaria certo se a palavra fosse só de 4 bits, na verdade qdo se faz um shift pra direita, não são os zeros ou uns a esquerda que são cortados, eles são empurados da esquerda pra direita n casas respeitando o tamanho da palavra, que no caso do int é 32 bits, por isso q qdo fazemos
1010 >> 1 = 101
pq é assim q ocorre
00000000000000000000000000001010 >> 1 = 00000000000000000000000000000101
nesse caso e em qualquer outro caso de números positivos o “>>” e o “>>>” terá o mesmo efeito, visto q o bit mais significativo é o sinal, que nesse caso (positivo) é sempre 0 (zero)
mas se fizermos assim:
11111111111111111111111111111111 >>> 1
qual número dá?
Será o maior número que se pode representar com 32 bits, pois continuará com 32 bits, porém moverá todos os 1s uma casa pra direita preenchendo com zero o bit mais significativo, consequentemente tornando-o positivo e máximo
entendeu?
Quanto ao calculo do numero negativo binario pra decimal, realmente não precisa ser feito, mas é bom saber como ele inverte os numero. Ele utiliza um negocim bem simples chamado ‘complemento 2’’:
vc inverte os bit e soma 1, por exemplo:
-> dado o número
00000000000000000000000000000001 = 1
seu simétrico é
11111111111111111111111111111110 + 1 => 11111111111111111111111111111111 = -1
entendeu?