Manipulando bits em java

2 respostas
B

Boa Noite!
Preciso criar uma função CompBin (base, bits, x) da qual eu receba um número inteiro x, a base desse número e então converter esse número para binário e efetuar o complemento de dois dele ,ajustando seu tamanho a quantidade de bits fornecida. Minha dúvida é como calculo a quantidade de bits de um número inteiro para poder ajustar seu tamanho pelo operador de deslocamento lógico “>>” ?
eu pensei em algo do tipo:

x = 1010(2);

n = bits - número de bits de x; //suponhamos que bits = 6

Complemento2 = x << n;

complemento2 = 001010(2)

Alguém poderia me ajudar?

2 Respostas

D

Pelo que entendi vc quer fazer algo assim:

int x_base_2_int  = 1010;
String x_base_2_String = "" + x_base_2_int; // Converte para String

while(x_base_2_String.length() < bits) {
    x_base_2_String = "0" + x_base_2_String;
}

return x_base_2_String;
  • O tipos int e Integer não coloca “zeros” a esquerda quando impresso;
  • Os operadores “>>” e “<<” são binários e não funcionam corretamente se o “int” estiver na base 2.
    Ex: 1010 << 2 = 4040, mas 0b1010 << 2 = 10 << 2 = 0b101000 = 40;
  • Vc pode usar Integer.toBinaryString(x) para converter inteiros para binário.
B

Entendi , muito obrigada!

Criado 29 de fevereiro de 2016
Ultima resposta 1 de mar. de 2016
Respostas 2
Participantes 2