Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Esercizio 10 - Giuseppe Imperioso
- Scrivere una function C che, fissato il numero n di bit, calcoli la rappresentazione di un intero:
- Per complemento a 2;
- Eccesso B (B-biased).
- */
- #include <stdio.h>
- #include <stdlib.h>
- int comp2(int num);
- int biased(int num,int N);
- void dec2bin_div(int dec);
- int main()
- {
- int num,scelta,N;
- printf("Scegliere: \n1) Per il complemento a 2\n2) Per l'eccesso B\t (B-biased)\n");
- scanf("%d",&scelta);
- printf("Inserire il numero :\n");
- scanf("%d",&num);
- printf("In quanti bit vuoi rappresentare il tuo numero?");
- scanf("%d",&N);
- if(scelta==1) {num = comp2(num);}
- else if(scelta==2) {num = biased(num,N);}
- printf("\n%d\n",num);
- dec2bin_div(num);
- }
- // Per rappresentare con il complemento a 2 un valore:
- int comp2(int num) {
- // Lo nego
- num=~num;
- // E gli sommo 1
- num+=1;
- return num;
- }
- // Per la rappresentazione con il biased
- // Bisogna calcolare il bias con:
- int biased(int num, int N) {
- int bias;
- bias = (1<<(N-1))-1; // equivalente di pow(2,n-1)-1
- num += bias; // e sommarlo al numero
- return num;
- }
- // Stampo i suoi bit
- void dec2bin_div(int dec) {
- int bits[sizeof(dec)*8];
- int k=0,j;
- // Pulisco l'array k
- for(k=0;k<sizeof(dec)*8;k++) { bits[k] = 0; }
- k=0;
- do {
- bits[k] = dec%2;
- dec = dec/2;
- k++;
- } while(dec>0);
- k=0;
- for(k=0;k<sizeof(dec)*8; k++)
- {
- if(k%4==0) { printf("\t"); }
- printf("%d",bits[(sizeof(dec)*8-1)-k]);
- }
- printf("\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement