+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 2 su 2

Conversione binaria..

  1. #1
    artemis79 non è in linea Scolaretto
    Post
    118
    Like Inviati  
    0
    Like Ricevuti  
    0
    dunque..
    ho una stringa :

    char String[10];
    String[0]='P';

    P = al carattere Ansi 80 se non erro...
    quindi dovrei convertire 80 in binario = 1010000
    per poi utilizzare il valore binario come stringa (ma questo non è un problema)

    il problema è proprio la conversione in binario come posso fare ?
    per convertire in esadecimale ho trovato questa e funziona:

    CString nibble;
    nibble.Format("%02x", (unsigned)(unsigned char)String[0] );

    ma in binario nulla ....
    Ultima modifica di artemis79; 24-09-2009 17:45 

  2. #2
    L'avatar di bottomap
    bottomap non è in linea Amanuense
    Post
    4,130
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao,

    Per il binario non hai niente di predefinito, dovrai scrivere una funzioncina che scriva eventualmente su un buffer (o a video) i bit di cui è composto il numero.

    Te la cavi abbastanza semplicemente con qualcosa del genere (generico numero a 32bit con zeri iniziali, in caso tu voglia rimaneggiare il codice per gestire solo 8 bit, la cosa non è per niente complicata ed un utile esercizio):
    unsigned int input
    char output[32];
    unsigned int bitmask=0x80000000;
    int i=0;
    while(bitmask>0){
       char bit='0'+((input & bitmask)>>(31-i));
       output[i++]=bit; //oppure stampa a video
       bitmask>>=1;
    }
    
    NB: Ho scritto di getto ed è possibile che abbia inserito qualche imprecisione... in caso a te il piacere di scovarle. Il codice inoltre può essere migliorato sostituendo lo shift interno con un semplice test che controlla se il risultato è diverso da zero.

    In alternativa puoi usare un approccio più "algebrico" e meno legato agli operatori binari. Puoi sfruttare l'operatore di modulo (%) per ottenere i resti di divisioni consecutive per 2. Con questo sistema devi però lavorare in maniera inversa, visto che otterrai per primi i bit meno significativi.
    Qualcosa del genere:
    int input;
    char output[32];
    int i=31;
    while(input>0){
       char bit='0'+(input%2);
       output[i--]=bit;
       input=input/2;
    }
    
    NB2 (Hint sulle imprecisioni): Gli array in output sono sufficienti a contenere l'output, ma non potresti utilizzarli, ad esempio, in una printf o una cout.

    Ciaociao
    Ultima modifica di bottomap; 25-09-2009 09:01 
    ℹ️ Leggi di più su bottomap ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. sottrazione binaria in javascript
    Da 0-MiNaTo- nel forum HTML, CSS e JavaScript
    Risposte: 1
    Ultimo Post: 10-03-2013, 16:27
  2. [C++] Ricerca binaria
    Da Nottambulo nel forum C/C++
    Risposte: 6
    Ultimo Post: 04-03-2012, 05:18
  3. Lettura binaria da file
    Da gheldrya nel forum C/C++
    Risposte: 10
    Ultimo Post: 31-03-2008, 19:52
  4. [C/C++] Sottrazione binaria
    Da programC__ nel forum C/C++
    Risposte: 5
    Ultimo Post: 20-09-2005, 10:09
  5. [C/C++] Gestione Binaria Dati
    Da lauda76 nel forum C/C++
    Risposte: 1
    Ultimo Post: 03-01-2005, 19:45