| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 15:17:46
|
Puppets
Virtual Machine Man
![[Avatar]](/images/avatar/6c7a107981f9c2a0ed55efce297bd1e2.png)
Membro desde: 12/12/2006 14:14:55
Mensagens: 508
Localização: Porto Alegre
Offline
|
Tenho olhado no google mais não encontrei nada convincente sobre como usar operadores bit a bit
achei essa classe como exemplo:
Minhas dúvidas são as seguintes:
Nesta instrução
i = ~b;
O valor de b é 15, porque eu negando o valor ele vai pra -16 ?
d = (a & b);
O valor de a é 10 e o de b é 15, porque d recebe o menor que neste caso é 10 ?
e = (a | b);
Nesta operação já é o contrário recebe o maior entre a e b neste caso é 15 alguém sabe o porque ?
|
Nunca desista antes de conseguir. |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 15:30:31
|
victorwss
JWizard
![[Avatar]](/images/avatar/4ab232445f9b21b65dfdf6ea5f27f704.png)
Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline
|
Puppets wrote:
i = ~b;
O valor de b é 15, porque eu negando o valor ele vai pra -16 ?
Puppets wrote:
d = (a & b);
O valor de a é 10 e o de b é 15, porque d recebe o menor que neste caso é 10 ?
Puppets wrote:
e = (a | b);
Nesta operação já é o contrário recebe o maior entre a e b neste caso é 15 alguém sabe o porque ?
This message was edited 3 times. Last update was at 15/07/2008 15:31:55
|
Victor Williams Stafusa da Silva
Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.
Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.
Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.
É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).
Se você escreve "concerteza", "concerteza" você andou matando aulas de português. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 15:37:07
|
bobmoe
GUJ Ranger
![[Avatar]](/images/avatar/9cc25407f209e031babdac7d3c520ccb.jpg)
Membro desde: 11/07/2006 20:45:48
Mensagens: 806
Localização: Sampa
Offline
|
victorwss wrote:
Puppets wrote:
i = ~b;
O valor de b é 15, porque eu negando o valor ele vai pra -16 ?
... ou
~x == (-x)-1
This message was edited 2 times. Last update was at 15/07/2008 15:39:42
|
BOB - Roberto Nogueira - bobmoe.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 16:21:32
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline
|
Ou seja, a melhor maneira de aprender sobre operadores bit a bit é olhar os bits.
Não os valores decimais.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 18:50:41
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline
|
Para entender pq o negativo de 15 é -16 e não -15, estude sobre complemento de 2.
Na verdade, para que os números negativos e positivos fossem simétricos, deveria haver o número -0 e +0.
Considere que o primeiro bit representa o sinal:
1000 0000 representaria -0 e
0000 0000 representaria +0.
Optou-se então por retirar a forma negativa do 0 e usa-la para representar outro valor. No caso, um número negativo a mais. Por isso é que variáveis como byte vão de -128 até 127, e não -127 até 127.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2008 19:53:03
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
ViniGodoy wrote:
Na verdade, para que os números negativos e positivos fossem simétricos, deveria haver o número -0 e +0.
Considere que o primeiro bit representa o sinal:
1000 0000 representaria -0 e
0000 0000 representaria +0.
http://en.wikipedia.org/wiki/Signed_number_representations indica que em alguns computadores antigos (IBM 7090, um predecessor dos mainframes) existia essa representação "sinal + magnitude" - o primeiro bit seria o sinal e o resto seria o valor - mas como ela era mais desajeitada para fazer contas (tradução: gastava mais hardware), foi substituída rapidamente pelo complemento de 2.
Mas os números de ponto flutuante realmente usam sinal + magnitude porque ela é melhor para fazer contas de multiplicação e divisão. O complemento de 2 é mais útil para fazer adições e subtrações.
|
|
|
|
 |
|
|