Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 40
  1. #1
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408

    [C] Miglior algoritmo per conversione decimale-binario

    Salve a tutti. Ho scritto un algoritmo per convertire un numero decimale in binario. Funziona alla perfezione, non mi da nessun errore. Volevo solo sapere se esistono algoritmi migliori di questo, perchè ho visto che se ne trovano tanti in giro, ed uno diverso dall'altro.
    Quello che ho scritto io, senza copiare da nessuna parte, è questo:

    codice:
    #include <stdio.h>
    
    /*
    ************************************
    *   Conversione decimale-binario   *
    ************************************
    */
    void conversione(int binario[], int dec){
        int i;
        for(i=0; i<9; i++){
            if(dec%2==0){
                binario[i]=0;
                dec=dec/2;
            }else{
                binario[i]=1;
                dec=dec/2;
            }
        }
    }
    /*
    ************************************
    *   Stampa del numero in binario   *
    ************************************
    */
    void stampa_numero(int binario[]){
        int i;
        for(i=8; i>=0; i--){
            printf("%d", binario[i]);
        }
    }
    
    int main(){
        int dec; // Numero inserito dall'utente
        int binario[9]; // Vettore per il numero convertito in binario
        int i=0;
        printf("Inserisci un numero: ");
        scanf("%d", &dec);
        conversione(binario, dec);
        stampa_numero(binario);
    }
    Si può migliorare in qualche modo, renderlo più ottimale?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Il principio è corretto, magari c'è qualche istruzione di troppo ...

    Ad esempio questa

    dec=dec/2;

    che è duplicata e qualche stranezza (perché converti a 9 bit?) ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Originariamente inviato da oregon
    Il principio è corretto, magari c'è qualche istruzione di troppo ...

    Ad esempio questa

    dec=dec/2;

    che è duplicata e qualche stranezza (perché converti a 9 bit?) ...
    A quanto dovrei convertire?
    Ho modificato l'istruzione che ripetevo, riducendola ad una

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Originariamente inviato da goatboy
    A quanto dovrei convertire?
    Non so ... scegli tu fino al massimo numero di bit utilizzati dal dato in input, ma in genere si converte 1 byte, 2 byte ... non 1 byte e 1 bit ... anche se non è un obbligo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Originariamente inviato da oregon
    Non so ... scegli tu fino al massimo numero di bit utilizzati dal dato in input, ma in genere si converte 1 byte, 2 byte ... non 1 byte e 1 bit ... anche se non è un obbligo ...
    Non ho capito, perchè io converto 1 byte e 1 bit? Non me ne intendo molto di questo argomento..
    Dovrei dichiarare il vettore di 8 anzichè 9?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Un byte è fatto da 8 bit ... no ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    Visto che con 1 byte puoi rappresentare solo numeri compresi tra 0 e 255 , è un po
    limitato !
    basta che aggiungi elementi all'array e numeri di cigli nel for nella funzione conversione.
    34 elementi "bit" dovrebbero essere sufficienti per rapresentare 9 miliardi
    Tecnologia

  8. #8
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Originariamente inviato da oregon
    Un byte è fatto da 8 bit ... no ?
    Si, giusto, non avevo capito cosa intendevi Sono scemo

  9. #9
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408

    Re: ciao

    Originariamente inviato da torn24
    Visto che con 1 byte puoi rappresentare solo numeri compresi tra 0 e 255 , è un po
    limitato !
    basta che aggiungi elementi all'array e numeri di cigli nel for nella funzione conversione.
    34 elementi "bit" dovrebbero essere sufficienti per rapresentare 9 miliardi
    Grazie per il consiglio, vedrò di modificare Così sarà più completo!

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481

    Re: ciao

    Originariamente inviato da torn24
    ... 34 elementi "bit" dovrebbero essere sufficienti per rapresentare 9 miliardi
    Sì ... però deve fare i conti con il dato usato

    int dec;

    che sarà (molto probabilmente) un intero con segno a 32 bit (quindi utilizzabili 31) ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.