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);
}
}