codice:
#include <stdio.h>
#include <stdlib.h>
#define n_len 32
int ruotare (int,int,int,int);
void bit_short(int,unsigned int[]);
int numero,appoggio,bit_ruotare,verso;
int main()
{
int k,bit[n_len],num;
printf("inserisci il numero= ");
scanf("%d",&numero);
bit_short(numero,bit);
printf("\t in binario:\n");
for(k=0;k<n_len;k++)
(k%4==0)?
printf(" %d",bit[k]):printf("%d",bit[k]);
printf("\ninserisci il verso da ruotare (destra=0),(sinistra=1): ");
scanf("%d",&verso);
printf("inserisci i numeri di bit da ruotare:");
scanf("%d",&bit_ruotare);
num=ruotare(numero,appoggio,bit_ruotare,verso);
bit_short(num,bit);
printf("\n in binario:\n");
for(k=0;k<n_len;k++)
(k%4==0)?
printf(" %d",bit[k]):printf("%d",bit[k]);
printf("\n");
system("pause");
}
void bit_short(int numero,unsigned int bit[n_len])
{
short j;
j=n_len-1;
do{
bit[j--]=numero&1;
numero=numero>>1;
}while (numero!=0 && j>=0);
if(j>=0){
do{
bit[j--]=0;
}
while(j>=0);
}
}
int ruotare (int numero,int appoggio,int bit_ruotare,int verso)
{
if (verso==0){
appoggio=numero;
numero=numero>>bit_ruotare;
appoggio=appoggio<<(sizeof(int)*8)-bit_ruotare;
numero=numero|appoggio;
printf("il numero ruotato e' %d",numero);
}
else{
appoggio=numero;
numero=numero<<bit_ruotare;
appoggio=appoggio>>(sizeof(int)*8)-bit_ruotare;
numero=numero|appoggio;
printf("il numero ruotato e' %d",numero);
}
return numero;
}
con gli int