sabato 23 febbraio 2008

Da decimale a binario....

/* Questo programma determina la rappresentazione in complemento a due di un numero decimale di tipo signed con un numero di bits fissato*/

#include
#include

int main(void) {

int numero;
int i, n_bits,n_base=2, bit_segno=0,n_max;
char nome[3];

printf("Inserisci il numero decimale di tipo:\n");
scanf("%d",&numero);

/* printf("Inserisci la base della rappresentazione (2 per binaria, 3 per ternaria):\n");
scanf("%d",&n_base);

if (n_base == 2) sprintf(nome,"%s","b");;
if (n_base == 3) sprintf(nome,"%s","tr");*/


printf("Inserisci il numero di bits da utilizzare:\n");
scanf("%d",&n_bits);

/* range = -2^(n_bits-1), ..., 2^(n_bits-1) -1 */

n_max = pow(n_base,n_bits-1)-1;
printf("%d\n",n_max);
if ((numero < -n_max+1) || (numero > n_max)) {
printf("Non ci sono abbastanza bits!\n");
return 1;
}

printf("La rappresentazione binaria del numero %d e': ",numero);

if (numero < 0) {
numero += pow(2,n_bits);
bit_segno = 1;
}


for (i=-1; i < n_bits; i++)
printf(" ");

for (i=1; i < n_bits; i++) {
printf("%d\b\b",(numero % n_base));
numero /= n_base;
}

printf("\b%d",bit_segno);

printf("\n");
return 0;

}

Nessun commento: