| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2003 08:31:01
|
duardor
Virtual Machine Man
![[Avatar]](/images/avatar/18d8042386b79e2c279fd162df0205c8.jpg)
Membro desde: 04/12/2002 16:26:48
Mensagens: 552
Localização: BRAZIL
Offline
|
Ae galera
To com uma duvida...
seguinte
como age o operador de inversao de bits?
Por exemplo:
seja o numero 1 em binario (pra simplificar colocamos um byte)
10000001
Sendo que o digito mais significante eh o digito de sinal e assumindo que 1 eh positivo
se eu aplicar o operador de inversao de bit ficaria
01111110
ou seja algum numero negativo muito grande
mas ao fazer isso em um programa com esse codigo:
ele imprime -2...
nao entendi... alguem pode me explicar?
|
Eduardo Rodrigues
Belo Horizonte - MG |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2003 10:11:05
|
Rafael Steil
Administrador
![[Avatar]](/images/avatar/8e296a067a37563370ded05f5a3bf3ec.jpg)
Membro desde: 31/08/2002 02:35:53
Mensagens: 5983
Localização: São Paulo
Offline
|
A representacao binaria de "1" eh "01". Ao inverter os bits, fica "10", que eh "2" positivo. Porem, como o sinal eh trocado, todos os outros bits mais a esquerda, que antes eram "0", viram "1", tornando o numero negativo.
Rafael
|
"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"
http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2003 10:26:30
|
duardor
Virtual Machine Man
![[Avatar]](/images/avatar/18d8042386b79e2c279fd162df0205c8.jpg)
Membro desde: 04/12/2002 16:26:48
Mensagens: 552
Localização: BRAZIL
Offline
|
entao ele nao vai inverter os bits 0 que estao mais a esquerda, com excecao do bit indicador de sinal???
eh isso?
|
Eduardo Rodrigues
Belo Horizonte - MG |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2003 10:30:43
|
Rafael Steil
Administrador
![[Avatar]](/images/avatar/8e296a067a37563370ded05f5a3bf3ec.jpg)
Membro desde: 31/08/2002 02:35:53
Mensagens: 5983
Localização: São Paulo
Offline
|
Ele inverte todos os bits.. "mais a esquerda" significa todos eles, nao somente um. Execute o programa para voce ver.
Rafael
|
"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"
http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2003 10:49:54
|
duardor
Virtual Machine Man
![[Avatar]](/images/avatar/18d8042386b79e2c279fd162df0205c8.jpg)
Membro desde: 04/12/2002 16:26:48
Mensagens: 552
Localização: BRAZIL
Offline
|
Rafael Steil wrote:Ele inverte todos os bits.. "mais a esquerda" significa todos eles, nao somente um. Execute o programa para voce ver.
Rafael
Mas rafael como eu disse:
Se sao todos bits entao
um byte tem 8 bits sendo q o de ordem mais alta eh o digito de sinal:
entao digamos 1 se o bit de ordem mais alta for 1 entao eh positivo
o numero "1" seria:
10000001
aplicando ~
01111110
q eh -2^21 =
-2097152
maos ao inves disso ele dah:
00000010 q eh o -2
os bits em amarelo
00000010 nao foram invertidos...
entao os bits que estao entre o bit de sinal e o primeiro bit 1 nao sao invertidos...
to errado?
agradeço sua ajuda
|
Eduardo Rodrigues
Belo Horizonte - MG |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2003 10:55:11
|
Rafael Steil
Administrador
![[Avatar]](/images/avatar/8e296a067a37563370ded05f5a3bf3ec.jpg)
Membro desde: 31/08/2002 02:35:53
Mensagens: 5983
Localização: São Paulo
Offline
|
Nao, nao.. "1" eh negativo, "0" eh positivo. Voce esta confundindo. Depois, a operacao de inversao eh feita como se fosse um int neste caso, tanto que voce precisa do cast para byte para fazer a atribuicao de novo.. entao, na verdade, voce esta trabalhando com um numero de 32 bits ( mas nao que isso interfira no resultado neste caso ).
Rafael
|
"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"
http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2003 11:02:43
|
duardor
Virtual Machine Man
![[Avatar]](/images/avatar/18d8042386b79e2c279fd162df0205c8.jpg)
Membro desde: 04/12/2002 16:26:48
Mensagens: 552
Localização: BRAZIL
Offline
|
Eu nao to preocupado com o bit de sinal
To sim preocupado com os bits entre o bit de sinal e o primeiro 1 no valor original...
Tipo digamos entao que um inteiro tenha 4 bits(pra simplificar) e o bit de sinal eh + ou -
Entao 1 :
+001
Aplicando ~
-110
Que na verdade eh igual -5
entendeu???
se inverter todos os bits teria q funcionar assim...
me exoplica isso ai direito, como funciona nos bits...
valew
[/b]
|
Eduardo Rodrigues
Belo Horizonte - MG |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2003 11:28:06
|
mlopes
JavaTeenager
![[Avatar]](/images/avatar/c3e26d423e3654fab1f76.jpg)
Membro desde: 18/11/2002 11:01:01
Mensagens: 163
Localização: Alemanha
Offline
|
Ola,
O 110 na verdade é -2. O java trabalha com complento de dois!!! (byte, short, int e long).
[]'s
|
Marco Lopes
----------------------------------------------------------
Pássaro que cedo madruga....
... porém o segundo rato é quem pega o queijo
---------------------------------------------------------- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2003 11:39:39
|
duardor
Virtual Machine Man
![[Avatar]](/images/avatar/18d8042386b79e2c279fd162df0205c8.jpg)
Membro desde: 04/12/2002 16:26:48
Mensagens: 552
Localização: BRAZIL
Offline
|
Putz
Complemento de 2...
Eu vi isso no primeiro periodo da facu e depois nunca mais...
Como eh mesmo a teoria?
|
Eduardo Rodrigues
Belo Horizonte - MG |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2003 12:05:57
|
mlopes
JavaTeenager
![[Avatar]](/images/avatar/c3e26d423e3654fab1f76.jpg)
Membro desde: 18/11/2002 11:01:01
Mensagens: 163
Localização: Alemanha
Offline
|
Ola
Na prática:
~i = -(i + 1)
O google acha bastante literatura sobre o assunto.
[]'s
|
Marco Lopes
----------------------------------------------------------
Pássaro que cedo madruga....
... porém o segundo rato é quem pega o queijo
---------------------------------------------------------- |
|
|
 |
|
|