si... fa esattamente la stessa cosa


codice:
#include <stdio.h>
#include <stdlib.h>
#define n_len 16
void bit_short(short n, unsigned char bit[n_len]);
void estrai_bit_meno_sign( short *A, short k);
int main()
{
  short A,k,i;
  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: ");
   estrai_bit_meno_sign(&A,k);
   for(i=k; i>0; i--)
   {
   bit_short(A,bit);
   printf(" %1u",bit[i]);
}
printf("\n");
  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_meno_sign(short *A, short k)
{unsigned short mask=~((~0u)<<k);
   *A=*A&mask;
}