Operando Bits

Galera, to com uma dúvida meio complicada aqui.

Quero fazer o seguinte, por exemplo, tenho dois numeros:

x = 170 (Binario 10101010 )
y = 167 (Binario 10100111 )

Eu quero fazer uma funcao q pegue um numero determinado de bits em uma determinada posicao (semelhante a trabalhar com Strings).

Exemplo:

getBits(y, 3,6)

Vou pegar no Y, na posicao 6, 3 bits, ou seja, o resultado vai ser: 111

Agora a parte melhor…rs…

Quero substituir o valor X, colocando o valor 111, ou seja, 10xxx010

Exemplo: X é 10101010 , aplicando o numero q achei (111), ficaria:

10111010

Alguém tem ideia de como fazer isso ???

Valeu !! :smiley:

Acho que você precisa analisar qual o efeito matemático em cima do que você quer fazer.

Na verdade, isso é apenas um exemplo. Em outras palavras, gostaria de saber como deslocar bits dentro de bits, e pegar determinada posicao dentro de bytes.

Ex:

1 byte cheio = FF

11111111

Quero pegar o valor do bit da terceira posicao, ou seja, 1.

Passando um decimal como exemplo, seria algo como:

getBit(decimal, posicao)

Ex:

getBit (1024, 2)

Vai me retornar, por exemplo, 1, significa que a segunda posicao do bit no decimal 1024 equivale a 1.

Isso é apenas um exemplo.

Mas o mais complicado é:

Como jogar este valor depois dentro de outro byte ?

Ex:

Peguei o valor da segunda posicao do bit no decimal 1024, ou seja, 1.

Agora quero “jogar” este valor dentro de um outro byte. Essa é a minha principal duvida. Eu preciso fazer isso para fazer um controle de maquinas.

No exemplo que passei, seria pegar o valor 111 e jogar dentro de outro Byte, que no caso seria o X.

java.nio.ByteBuffer você usar deve. :smiley:

Dê uma olhada nos operadores binários ( & e | ). Eles resolverão seu problema de uma maneira simples.

Até!

Valeu galera, consegui resolver :-o