Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: m@o_614 en 15 Diciembre 2011, 19:20 pm



Título: codigo conversion decimal a binario y complemento a dos
Publicado por: m@o_614 en 15 Diciembre 2011, 19:20 pm
Código
  1.  
int binario(int num);
int invertir(int num);

int main()
{
    int num,complemento,res;
    printf("Bits en la RAM\n\n");
    printf("Dame un valor entero: ");
    scanf("%d",&num);
    if(num>0)
        binario(num);
    else if(num<0)
    {
        complemento=binario(num);
        res=complemento_a_dos(complemento);
    }

    return 0;
}

int binario(int num)
{
    if(num>1)
    {
        binario(num/2);
        num%=2;
        printf("%d",num);
    }
    else
    {
        printf("%d",num);
        return num;
    }
    return 0;
}

int complemento_a_dos(int complemento)
{
    int res;
    while((complemento%=10)!=1){
    complemento/=10;
    }
       res=~(complemento%=10);

 return res;
}

tengo un problema con este codigo, hasta la funcion que convierte decimal en binario esta bien, pero despues cuando ingrese un numero negativo me tiene que dar el complemento a dos, y ahí fue donde me perdi completamente. Estaba pensando que tal vez con divisiones sucesivas hasta que me aparezca un 1 de derecha a izquierda y despues los digitos que le siguen cambiar los 0 por unos y viceversa


Título: Re: codigo conversion decimal a binario y complemento a dos
Publicado por: El_Java en 16 Diciembre 2011, 18:02 pm
Complemento a dos de un numero:
Wikipedia: Otra forma es negar todos los dígitos (se haya el complemento a 1) y después sumar un 1 al resultado, viene a ser lo mismo que lo anteriormente explicado.

Código
  1. #include <iostream>
  2. int main(){
  3.    int num;
  4.    cin >> num;
  5.  
  6.    cout << ((~num)+1) << endl;
  7. }
  8.