Conversione da decimale a binario

di il
3 risposte

Conversione da decimale a binario

Ciao, scusate ancora per il disturbo ma ho riscontrato delle difficoltà nello svolgere un programma che dato un numero decimale in input lo converta in binario. Il programma deve essere svolto senza uso di funzioni complementari e senza l'uso degli array...
Fino ad ora sono riuscito a sviluppare l'algoritmo che mi converte il numero decimale in binario senza problemi. I problemi sorgono durante la stampa poichè i numeri nel sistema binario si leggono al contrario.. Qualcuno conosce un modo per invertire l'ordine delle cifre senza l'uso di array?

#include<stdio.h>

int main(){
	
	int n,bin;

	printf("dammi numero: ");
	scanf("%d",&n);
	
	while(n>0){
		
	if(n%2==0)
	bin=0;
	if(n%2!=0)
	bin=1;
	n=n/2;
	
	printf("%d",bin);
	
	}
	return 0;
	}

3 Risposte

  • Re: Conversione da decimale a binario

    L’unico modo è ricorsione
  • Re: Conversione da decimale a binario

    #include<stdio.h>
    
    int main(){
        int n, bitmask; 
        
        printf("dammi un numero: ");
        scanf(" %d",&n);    
        
        if(n < 2) 
            printf("%d",n); 
        else{
            for(bitmask = 2; n/bitmask > 0; bitmask <<= 1);
            
            do{
                bitmask >>= 1;
                if(n & bitmask)
                    printf("1");
                else
                    printf("0");      
            }while(bitmask > 1);  
        }
        
        return 0;
    }
  • Re: Conversione da decimale a binario

    Weierstrass ha scritto:


    #include<stdio.h>
    
    int main(){
        int n, bitmask; 
        
        printf("dammi un numero: ");
        scanf(" %d",&n);    
        
        if(n < 2) 
            printf("%d",n); 
        else{
            for(bitmask = 2; n/bitmask > 0; bitmask <<= 1);
            
            do{
                bitmask >>= 1;
                if(n & bitmask)
                    printf("1");
                else
                    printf("0");      
            }while(bitmask > 1);  
        }
        
        return 0;
    }
    Grazie mille, ora dovrò studiarlo per capire il suo funzionamento ma almeno ho un esempio funzionante. Grazie ancora!
Devi accedere o registrarti per scrivere nel forum
3 risposte