[RESOLVIDO] Ajuda operadores bit a bit

4 respostas
Guitar_Men

Pessoal,

estou trabalhando em um protocolo de comunicação e a especificação de um dos campos diz:
Ex:
Valor do campo 0x82D634CC (valor negativo)
retira-se o bit 31 e divide o valor dos bits 30 ao 0 por 1000000.
0x82D634CC, retirando o bit 31, ficará 0x2D634CC e dividindo por 1000000, logo 47.592652
como valor é negativo, multiplica-se por -1, -47.592652

Porém não estou conseguindo fazer…
Como retirar apenas o valor do bit 31 ?

4 Respostas

Dieval_Guizelini

Olá,

você quer apenas o valor que está no 31o bit?

que tal assim?

int x=0x82D634CC; System.out.println( x & (1<<30) );

fw

Guitar_Men

Na verdade não tenho idéia de como fazer essa operação toda… Eu preciso retirar o bit 31 para chegar naquele outro valor 0x2D634CC …

Dieval_Guizelini

Então é isso que você quer:

public static void main(String[] args) { int x = 0x82D634CC; String sx = Integer.toBinaryString(x); System.out.println(sx); // 1000 0010 1101 0110 0011 0100 1100 1100 int x2 = x - (1<<31); sx = Integer.toBinaryString(x2); System.out.println(sx); System.out.println(String.format("\n%x",x2)); }

saída do código acima:

10000010110101100011010011001100
10110101100011010011001100

2d634cc
0

fw

Guitar_Men

Pouts é mais simples do que eu pensava, se burrice fosse dinheiro eu tava rico… Sabe como é né, 10 anos só fazendo CRUD’s rsrsrsrsr. Valew

Criado 12 de setembro de 2010
Ultima resposta 13 de set. de 2010
Respostas 4
Participantes 2