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.
come faccio a visualizzare solo quei bit che mi interessano?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]); } }![]()

