Dopo avere estratto i bit da una variabile di seguito (char,short,long),
dovrei calcolare il relativo valore dalla formula:
Val_variabile= bit[len](pow 2,n-1)+....+bit[2](pow 2,2)+bit[1](pow 2,1)+ bit[0](pow 2,0)
decrescendo man mano
dove bit[] è l'array di bit della variabile.
come posso inserirlo sempre in questo codice ?![]()
codice:#include <stdio.h> #include <stdlib.h> #include <math.h> #define n_len 32 void bit_show(short,char [],short[]); int main() { short menu, bit[n_len],k; unsigned char len; union word32bit { long L; short S[2]; char C[4]; }word; do { puts("\n\n\nseleziona"); puts("\n[0] uscita programma"); puts("\n[1] rappresenta intero char in binario"); puts("\n[2] rappresenta intero short in binario"); puts("\n[3] rappresenta intero long in binario"); fflush(stdin); scanf("%hd",&menu); switch(menu) { case 0:exit(0); case 1: len=sizeof(char); printf("immettere intero char C="); fflush(stdin); scanf("%d",&(word.C[0])); puts("char in decimale, esadecimale e binario"); printf("C=%+10hd, hex=%02x",word.C[0],word.C[0]); bit_show(sizeof(char),word.C,bit); break; case 2: len=sizeof(short); printf("immettere intero short S="); fflush(stdin); scanf("%hd",&(word.S[0])); puts("short in decimale, esadecimale e binario"); printf("S=%+10hd, hex=%04x",word.S[0],word.S[0]); bit_show(sizeof(short),word.C,bit); break; case 3: len=sizeof(long); printf("immettere intero long L="); fflush(stdin); scanf("%hd",&(word.L)); puts("long in decimale, esadecimale e binario"); printf("L=%+10d, hex=%081x",word.L,word.L); bit_show(sizeof(long),word.C,bit); break; default : exit(1); } for(k=8*len-1;k>=0;k--) (k%4==0)? printf(" %d",bit[k]):printf(" %d",bit[k]); }while(menu !=0); } void bit_show (short len,char ch[],short bit[n_len]) { short j,jc; char c; for(j=0; j<n_len;j++) bit[j]=0; for(jc=0; jc<len; jc++) { c=ch[jc]; for(j=0;j<8; j++) { bit[j+8*jc]=c&1; c=c>>1; } } }

Rispondi quotando