Non si può compilare uno spezzone di codice , che aveva solo lo scopo di essere un esempio !
come ti hanno detto nell'ultimo messaggio da persone esperte , la soluzione corretta non
è quella che ti ho proposto io !
Ma solo per fare vedere che era una soluzione , NON la migliore , sicuramente .
posto come saprei risolverlo io , visto che gli operatori su bit non so usarli !
Codice testato e funzionante
codice:
#include <stdio.h>
#include <stdlib.h>
void convertibinariodecimale(char output[],char temp[],int posizione);
char *get_array(char n) ;
int main(int argc, char *argv[])
{
int i;
char *risultato;
risultato=get_array('a');
for(i=6;i>=0;i--)
printf("lettera %c codice ascii %d \n",risultato[i],risultato[i]);
system("PAUSE");
return 0;
}
char *get_array(char n)
{
int i, k;
char *output=(char*)malloc(sizeof(char)*8);
char temp[8];
char buffer[8];
itoa(n,buffer,2);
printf("codice binario di partenza --> ");
puts(buffer);
puts("******");
puts("codici binari risultanti");
for(i=6;i>=0;i--)// ciclo per ogni elemento dell'arrey di uscita
{
for(k=6;k>=0;k--)//ciclo per ogni elemento binario di buffer
{
temp[k]=buffer[k];
if(k==i)//modifico di volta in volta un solo bit
{
if(temp[k]=='0')
temp[k]='1';
else
temp[k]='0' ;
}
}
puts(temp);
convertibinariodecimale(output,temp,i);
}
puts("*****************************");
return output;
}
void convertibinariodecimale(char output[],char temp[],int posizione)
{
int i=0;
int valore_cifra_binaria=1;
int numero_convertito=0;
int bit=0;
for(i=6;i>=0;i--)
{
if(temp[i]=='1')
bit=1;
else
bit=0;
numero_convertito +=valore_cifra_binaria*bit;
valore_cifra_binaria*=2;//passo al valore decimale del prossimo bit
}
output[posizione]=numero_convertito;
}