ho provato ad implementare il codice in C, ma non riesco a visualizzare i bit meno significativi e la maschera che mi sono creata con gli operatori bitwise
codice:
#include <stdio.h>
#include <stdlib.h>
#define n_len 16
void bit_short(short n, unsigned char bit[n_len]);
void estrai_bit(unsigned char bit[n_len], short A, short k);
int main()
{
short A,k;
unsigned char bit[n_len];
printf("numero:"); scanf("%d",&A);
bit_short(A,bit);
printf("in binario:");
for(k=0; k<n_len; k++)
(k%4==0) ? printf(" %1u",bit[k]): printf("%1u",bit[k]);
printf("\n");
printf("quanti bit meno significativi vuoi estrarre? :");
scanf("%d",&k);
printf("i bit meno significativi: \n");
estrai_bit(bit,A,k);
system("PAUSE");
return 0;
}
void bit_short(short n, unsigned char bit[n_len])
{
short j;
j=n_len-1;
do {
bit[j--]=n&1;
n=n>>1;
} while(n !=0 && j>=0);
if(j>=0)
{
do {
bit[j--]=0;
} while(j>=0);
}
}
void estrai_bit(unsigned char bit[n_len],short A, short k)
{ short mask=0;
short i;
for(i=1; i>k; i++){
mask=mask<<1|1;
bit[i]=A&mask;
printf("%u\n",bit[i]);
printf("%d\n",mask);
}
}