Sei sulla pagina 1di 7

2012

CONVERSO DE BASE
Trabalho apresentado ao Professor Giovane Christian Nunes como exigncias da
disciplina de Clculo Numrico pelos discentes Karith Mesquita, Lincoln Barony, Lcio
Flvio e Marina Bornachi.

Faculdade de Engenharia - FaEnge


Universidade do Estado de Minas Gerais
05/09/2012

1. IMPLEMENTAR UM MTODO DE CONVERSO DE BASE DECIMAL


FRACIONRIA PARA BASE BINRIA E BINRIA FRACIONRIA PARA
DECIMAL.
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>

main(){
{

int MENU;
printf("\n\t\t* * Escolha o tipo de Conversao * *\n");
printf("\t\t*

*\n");

printf("\t\t*

0 - Sair

printf("\t\t*

1 - decimal para binario

*\n");

printf("\t\t*

2 - binario para decimal

*\n");

printf("\t\t*

*\n");

*\n");

printf("\t\t* * * * * * * * * * * * * * * * * * *\n");
printf("\n\t\t\tA opcao escolhida:");
scanf("%d",&MENU);
if(MENU!=0)
{
if(MENU==1)
{
printf("\nConversao de binario para decimal.\n\n");
float numero1, numero2, sobra, res=-1, x2=0.5, soma2=0, soma3;
int ptint1, ptint2, dgt1, dgt2, soma1=0, x1=1;

printf("Informe um numero Binario:\n");


scanf("%f", &numero1);
2

numero2 = numero1;
ptint1 = numero1;
sobra = numero1 - ptint1;

while(ptint1 >= 1){


dgt1 = ptint1%10;
ptint1 = ptint1/10;
soma1 = soma1 + dgt1 * x1;
x1 = x1 * 2;
}

while(res != 0){
numero2 = numero2 * 10;
ptint2 = numero2;
dgt2 = ptint2%10;
res = numero2 - ptint2;
soma2 = soma2 + dgt2 * x2;
x2 = x2 * 0.5;
}
soma3 = soma1 + soma2;
printf("%f\n", soma3);
system("PAUSE");
}
if(MENU==2)
{
printf("\nConversao de decimal para binario.\n\n");
int pi, pi2, vet1[100], vet2[100], i=0, cont1=-1, cont2=0;
float num, pf, aux;

printf("Informe um numero Decimal:\n");


scanf("%f", &num);

pi = num;
pi2 = pi;
pf = num - pi;
while(pi >= 1){
vet1[i] = pi%2;
pi = pi/2;
i++;
cont1 = cont1 + 1;
}
printf("%f \n", num);
if(pi2 == 0){
printf("0");
}
for(i = cont1; i >= 0; i--){
printf("%d", vet1[i]);
}
printf(",");
i=0;
while(pf != 0){
aux = pf * 2;
pi = aux;
pf = aux - pi;
vet2[i] = pi;
i++;
cont2 = cont2 + 1;

}
for(i=0; i < cont2; i++){
printf("resultado = %d\n", vet2[i]);
}
system("PAUSE");
}

else
{
printf("BYE BYE");
getchar();
}
}
}
}

2. CONVERTA OS SEGUINTES NMEROS DECIMAIS PARA SUA FORMA


BINRIA.
A) X = 37
37 / 2 = 16 resto 1
16/2 = 8 resto 0
8/2 = 4 resto 0
4/2 = 2 resto 0
2/2 = 1 resto 0
Logo o nmero 37 na base binria fica 1000001

B) Y = 2345
2345/2 = 1172 resto 1
1172/2 = 586 resto 0
586/2 = 293 resto 0
5

293/2 = 146 resto 1


146/2 = 73 resto 0
73/2 = 36 resto 1
36/2 = 18 resto 0
18/2 = 9 resto 0
9/2 = 4 resto 1
4/2 = 2 resto 0
2/2 = 1 resto 0
Logo o nmero 2345 na base binria fica 100100101001

C) Z = 0,1217
Primeiramente analisamos as casas antes da vrgula. O nmero zero na base binria tambm zero.
0,1217 x 2 = 0,2434 primeira casa 0
0,2434 x 2 = 0,4868 primeira casa 0
0,4868 x 2 = 0,9736 primeira casa 0
0,9736 x 2 = 1,9472 primeira casa 1
0,9472 x 2 = 1,8944 primeira casa 1
0,8944 x 2 = 1,7888 primeira casa 1
0,788 x 2 = 1,5776 primeira casa 1
0,5776 x 2 = 1,1552 primeira casa 1
0,1552 x 2 = 0,3104 primeira casa 0
0,3104 x 2 = 0,6208 primeira casa 0
0,6208 x 2 = 1,2416 primeira casa 1
0,2416 x 2 = 0,4832 primeira casa 0
0,4832 x 2 = 0,9664 primeira casa 0
0,9664 x 2 = 1,9328 primeira casa 1
0,9328 x 2 = 1,8656 primeira casa 1
Provavelmente uma dzima peridica, por isso encerrarei o processo por aqui, sendo assim a
representao de 0,1217 na base binria 0,000111110010011

3. CONVERTA OS SEGUINTES NMEROS BINRIOS PARA BASE DECIMAL:


A) X = 101101
5

1 x 2 + 0 x 2 + 1 x 2 + 1 x 2 + 0 x 2 + 1 x 2 = 32 + 0 + 8 + 4 + 0 + 1 = 45

B) Z = 0,1101
0

-1

-2

-2

-3

0 x 2 + 1 x 2 + 1 x 2 + 0 x 2 + 1 x 2 = 0 + + + 0 + = 0,875

C) Y = 110101011
8

1 x 2 + 1 x 2 + 0 x 2 + 1 x 2 + 0 x 2 + 1 x 2 + 0 x 2 + 1 x 2 + 1 x 2 = 256 + 128 + 0 + 32 + 0 + 8 + 0 + 2
+ 1 = 427

D) W = 0,1111111
0

-1

-2

-3

-4

-5

-6

-7

0x2 +1x2 +1x2 +1x2 +1x2 +1x2 +1x2 +1x2 =0+ + + +

0,9921875

Potrebbero piacerti anche