Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Convertitore binario
Forum - C/C++ - Convertitore binario

Avatar
TheEngi (Ex-Member)
Pro


Messaggi: 145
Iscritto: 30/08/2009

Segnala al moderatore
Postato alle 21:20
Domenica, 08/11/2009
Ho appena iniziato con c++ e avrei bisogno di un aiuto:
#include <iostream>
#include <string>
#include <algorithm>
#include <stdio.h>
using namespace std;

int main()
{
   int x;
  
   string k, n;
   do
   {
   cout << endl << "Inserisci un numero da convertire in binario:" << endl;
   cin >> x;
   if (x<0)
   {
      cout <<"errore";// in teoria qua ci va inserito il complemento a due
       break;
       return 0;
   }
   while(x)
   {
              if(x%2 == 0)
              {
              k += "0";
              }
              else
              {
               k += "1";
              };
              x = x/2;
   }
   reverse(k.begin(), k.end());
   cout << endl << k << endl << endl;
   cout << "Vuoi convertire un altro intero?(si/no)" << endl;
   cin >> n;
   k = "";
   }
   while(n == "si");
   fflush(stdin);
   getchar();
}
questo è un mio primo programma però mi dovreste aiutare con il complemento a due nel senso che se il programma si trovasse davanti ad un numero decimale negativo lo scomponga in binario faccio il complemento a due e scriva alla fine il numero in binario con il complemento a due e il numero decimale corrispondente ma come faccio?
vi ringrazio in anticipo per l'aiuto


PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 3:31
Lunedì, 09/11/2009
Io farei qualcosa come:

Codice sorgente - presumibilmente C/C++

  1. char buf[40];
  2. int num = 50;
  3. int complement = ~num; //1s complement
  4. complement += 1; //2s complement
  5.  
  6. printf("%s (binary)\n", ltoa(complement, buf, 2));



ltoa è una funzione del C ANSI, in C++ non mi ricordo qual'è l'equivalente... non ho provato il codice, ma dovrebbe funzionare.


Il mio blog: https://piero.dev
PM Quote