viernes, 16 de febrero de 2018

hallar el complemento de un numero binario - binario a decimal y decimal a binario

package ejemplos;

import java.util.ArrayList;
import java.util.Collections;
el problema es convertir un numero a binario y después invertirlo para encontrar su complemento
ej
si me dan 50 lo tengo que convertir a binario 110010 entonces tengo que devolver 001100 que es su complemento y despues pasarlo a decimal que en este caso seria 13 o sea que 13 es el complemento de 50



public class Principal {

public static void main(String[] args) {
int a = 50;
int b = 30;
String res = obtenerBinario(a);//obtiene el binario invertido
String complemento = obtenerComplemento(res);
System.out.println(complemento);
}
//este metodo devuelve el complemento en binario
public static String obtenerBinario(Integer numero) {
String str = "";
Integer binary;
while(numero>0)
{
binary= numero%2;
if(binary==0){
binary=2;

}
str= binary.toString() + str;
numero = numero/2;
}
//char[] str2 =str.toCharArray();
strstr.replaceAll("1","0");
str = str.replaceAll("2", "1");
return str;
}
//metodo para cambiar de binario a decimal
public static String obtenerComplemento(String num) {
int tamaño = num.length() -1;
Integer binary = Integer.parseInt(num);
int ultimoNumero;
int answer;
Integer sumatoria=0;
for(int i = 0;i<=tamaño;i++)
{
ultimoNumero = binary%10; //obtiene el ultimo numero de la cadena
answer =  (int) Math.pow(2, i);
sumatoria=sumatoria + (answer*ultimoNumero);
binary = binary/10; //saca el ultimo numero
}
return sumatoria.toString();
}


}

No hay comentarios:

Publicar un comentario