Ciao ultrasound91,grazie per la risposta, ecco il codice:
--- Main ---
#include <stdio.h>
#include <stdlib.h>
char rotat(char,short);
void stamp_bin(int);
void main()
{ short n_bit; char ch;
printf("Inserisci carattere da ruotare:");
scanf("%c",&ch);
fflush(stdin);
stamp_bin(ch);
printf("\n Di quanti bit ruotare e in che direzione? \n(es.:5 ruota a dx di 5 bit,-5 ruota a sx di 5 bit)\n");
scanf("%d",&n_bit);
fflush(stdin);
if (n_bit>0)
{
printf("\n la char e' stata ruotata a destra di %d bit:",n_bit);
stamp_bin(rotat(ch,n_bit));
}
else
{
printf("\n la char e' stata ruotata a sinistra di %d bit:",abs(n_bit));
stamp_bin(rotat(ch,n_bit));
}
system("PAUSE");
}
--- Rotat.c ---
#include <stdio.h>
#include <stdlib.h>
char rotat(char ch,short n_bit)
{ char a,b,c,d,x;
d=abs(n_bit);
if(n_bit>0)
{
a=ch>>d;
b=ch<<8-d;
c=a|b;
}
else
{
a=ch>>8-d;
b=ch<<d;
c=a|b;
}
return c;
}
--- stamp_bin.c ---
#include <stdio.h>
#include <stdlib.h>
void stamp_bin(char ch)
{ short i,j,z,quoziente,resto; char bit[8];
for(i=0;i<8;i++)
bit[i]=0;
quoziente=ch;
resto=ch;
do{ resto=quoziente%2;
quoziente=quoziente/2;
bit[i-1]=resto;
i--;}while(quoziente>=0 && i>=0);
printf("\nValore in bit: ");
for(j=0;j<8;j++)
{
printf("%d",bit[j]);
}
}