salve,
implementando questo codice, sn arrivato che il mio short A, per esempio è 5, quando lo chiamo nella funzione bit_short, mi modifica il suo valore con 0, quindi prima che modifica il valore me lo salvo nella variabile b.
codice:
#include <stdio.h>
#include <stdlib.h>
#define n_len 8
void bit_short(short *n, unsigned char bit[n_len]);
void estrai_bit_meno_sign( short *, short k, unsigned char bit[n_len]);
int main()
{
  short A,k,i,b;
  unsigned char bit[n_len];
  printf("numero:"); scanf("%d",&A);
  b=A;                                          //mi salvo il valore di A prima che lo perdo nella bit_short
  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(&b,k,bit);
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 *n, short k,unsigned char bit[n_len])
{unsigned short mask=~((~0u)<<k);              // mi creo una maskera
short i;
   for(i=0; i<k; i++){
   bit[i]=*n&mask;                                  //faccio l'and della mia variabile con la maskera
   printf("%u",bit[i]);          
}
}
come faccio a visualizzare solo quei bit che mi interessano?