-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTRABORGfinal.c
101 lines (68 loc) · 1.58 KB
/
TRABORGfinal.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//processo para achar a mantissa
void mantissa(float mant){
float multi;
int mantCal =1,i = 0,j;
printf("Mantissa = ");
while(mantCal ==1 || mantCal == 0){
multi = mant * 2;
mantCal = (int)multi;
printf("%d ",mantCal);
mant = multi-((int)multi);
i++;
if(mant == 0 && mantCal == 0 || i >= 23) break;
}
if(i < 23){
for(j = i; j < 23; j++ ){
printf("0 ");
}
printf("\n");
}
printf("\n");
}
//processo de divisao do numero
int primeiroPasso(float num){
int expo = 0;
float quociente, resul, resultado, base;
while(1){
if(num <2)break;
quociente = num / 2;
expo++;
//printf("%f/ 2 = %f\n",num,quociente);
num = quociente;
}
//printf("Resultado = %f x 2**%d\n",quociente,expo);
resultado = quociente -((int)quociente);
mantissa(resultado);
return expo;
}
//A funcao principal
int main(){
float num;
int sin, expoente,inteiro, i = 1, binarioInt = 0;
printf("Informe o numero: ");
scanf("%f",&num);
if(num < 0){
sin = 1;
num*= (-1);
}
else if(num > 0){
sin = 0;
}
printf("SINAL = %d\n", sin);
expoente = primeiroPasso(num);
printf("EXPOENTE = %d\n", expoente);
inteiro = expoente + 127;
printf("Expoente + 127 = %d\n",inteiro);
//processo para converter a parte inteira
while(inteiro > 0){
binarioInt = binarioInt + inteiro % 2 * i;
i = i * 10;
inteiro = inteiro / 2;
}
printf("EM BINARIO = %d\n\n",binarioInt);
//printf("NUMERO %f EM BINARIO E :%d%d\n",num,sin,binarioInt);
return 0;
}