Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C]dato un numero convertirlo in base 2

    come faccio a fare una procedura che dato un numero me lo converta in base 2
    grazieeeeeeeeeeeeeee

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Come faresti con "carta e penna"?

  3. #3
    Dato N chiedi e' dispari ? se si scrivi 1 altrimenti scrivi 0
    poi prendi N/2 (solo la parte intera) chiedi e' dispari? se si scrivi 1 altrimenti scrivi 0
    continua a dimezzare finche' non arrivi a 1 o 0
    Avevo in mente
    void convert2bin(int num)
    {
    int mask = 0x80000000; // inizializzi la maschera

    while(mask > 0)
    {
    printf("%c",
    (num & mask) ? 1 : 0);
    mask = mask >> 1;
    }
    }

  4. #4
    codice:
    #include <iostream>
    #include <stdlib.h>
    #include <math.h>
    using namespace std;
    
    int main()
    { 
        int valore;
        cout<<"\nInserisci il numero da convertire: "<<endl;
        cin>>valore;
        cout<<"\nIl numero convertito in base 2 e': "<<endl;
        for (int j = 8*sizeof(int); j >= 0; j--)
           cout << (bool)(valore&((int)pow(2,j))); 
        cout << endl << endl; 
        system("pause");
        return 0;   
    }
    Trascura la pow, che altro non fa che ottenere tutte le potenze di 2 ...
    Guarda la sizeof ...
    (sizeof (int)*8) ti consente di ottenere il numero di bit ...
    (sizeof restituisce il numero di byte)...
    Prova con: int mask = pow(2,sizeof(int)*8);
    Poi stampi un numero come carattere -_-" (0x30 -> 0, 0x31 -> 1)...
    Experience is what you get when you don’t get what you want

  5. #5
    (tra parentesi, invece di pow(2,j) usa 1<<j)
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Originariamente inviato da Xaratroom
    codice:
    #include <iostream>
    /* omissis */
    using namespace std;
    
    int main()
    { 
    /* omissis */
        cout<<"\nInserisci il numero da convertire: "<<endl;
        cin>>valore;
        cout<<"\nIl numero convertito in base 2 e': "<<endl;
        for (int j = 8*sizeof(int); j >= 0; j--)
           cout << (bool)(valore&((int)pow(2,j))); 
        cout << endl << endl; 
    /* omissis */
    }
    non è C ;-)

  7. #7
    Giusto quello che scrive MItaly, perchè meno dispendioso ...
    non è C ;-)
    codice:
    ...
        printf("\nInserisci il numero da convertire: \n");
        scanf ("%d ",valore);
        printf("\nIl numero convertito in base 2 e': \n");
    ...
    Il tipo di dato bool può contenere solo i valori logici 0 e 1 ...
    Al posto del casting bool puoi inserire l'operatore ternario, come hai fatto nel tuo codice, la variabile j non può essere dichiarata nel for ...
    Experience is what you get when you don’t get what you want

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.