Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2014
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.46 KB | None | 0 0
  1. /*  Esercizio 10 - Giuseppe Imperioso
  2.     Scrivere una function C che, fissato il numero n di bit, calcoli    la rappresentazione di un intero:
  3.     Per complemento a 2;
  4.     Eccesso B (B-biased).
  5. */
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8.  
  9. int comp2(int num);
  10. int biased(int num,int N);
  11. void dec2bin_div(int dec);
  12. int main()
  13. {
  14.     int num,scelta,N;
  15.     printf("Scegliere: \n1) Per il complemento a 2\n2) Per l'eccesso B\t (B-biased)\n");
  16.         scanf("%d",&scelta);   
  17.     printf("Inserire il numero :\n");
  18.         scanf("%d",&num);
  19.     printf("In quanti bit vuoi rappresentare il tuo numero?");
  20.         scanf("%d",&N);
  21.     if(scelta==1) {num = comp2(num);}
  22.     else if(scelta==2) {num = biased(num,N);}
  23.     printf("\n%d\n",num);
  24.     dec2bin_div(num);
  25. }  
  26. // Per rappresentare con il complemento a 2 un valore:
  27. int comp2(int num) {
  28.     // Lo nego
  29.     num=~num;
  30.     // E gli sommo 1
  31.     num+=1;
  32.     return num;
  33. }
  34. // Per la rappresentazione con il biased
  35. // Bisogna calcolare il bias con:
  36. int biased(int num, int N) {
  37.     int bias;
  38.     bias = (1<<(N-1))-1;    // equivalente di pow(2,n-1)-1
  39.     num += bias;            // e sommarlo al numero
  40.     return num;
  41. }
  42. // Stampo i suoi bit
  43. void dec2bin_div(int dec) {
  44.     int bits[sizeof(dec)*8];
  45.     int k=0,j;
  46.     // Pulisco l'array k   
  47.     for(k=0;k<sizeof(dec)*8;k++) { bits[k] = 0; }
  48.     k=0;   
  49.     do {
  50.         bits[k] = dec%2;
  51.         dec = dec/2;
  52.         k++;
  53.     } while(dec>0);
  54.     k=0;
  55.  
  56.     for(k=0;k<sizeof(dec)*8; k++)
  57.     {
  58.             if(k%4==0) { printf("\t"); }
  59.             printf("%d",bits[(sizeof(dec)*8-1)-k]);
  60.     }
  61.     printf("\n");
  62.    
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement