quinta-feira, 24 de maio de 2012

          convertendo numero binário em Java PROMPT DOS



//conversão do valor numérico para binário, ou vice-versa
2 /*importando a classe Scanner para inserção de valores pelo
3 teclado*/
4 import java.util.Scanner;
5 //Criação da classe Ex2
6 public class Ex2
7 {
8    //Comando principal para execução do programa
9    public static void main (String args[])
10    {
11       //criando o objeto insere da classe Scanner
12       Scanner input = new Scanner(System.in);
13       //criação de variáveis do tipo inteiro
14       int decimal,valor,valor2,b,resultado;
15       //criando uma string e atribuindo um valor
16       String numeral="nao";
17       //atribuindo valores a variáveis recem criadas
18       decimal=1;
19       resultado=0;
20       b=0;
21
22       //exibindo uma mensagem no prompt de comando
23       System.out.print("Digite um numero: ");
24       //esperando a inserção de um valor por parte do usuário
25       valor = input.nextInt();
26       //laço de repetição while
27       //enquanto valor for maior ou igual a decimal faça
28       while (valor>=decimal)
29       {
30          //se decimanl for zero, então decimal é 1
31          if (decimal==0)
32              decimal=1;
33          else //do contrário decimal é ele mesmo x10
34
35             decimal*=10;
36       }
37       valor2 = valor;
38       while (decimal>0) // verificação se o valor digitado é um numeral ou um valor binário
39       {
40          resultado = valor2/decimal;
41          if (resultado>1)
42             numeral="sim";
43          valor2=valor2 % decimal;
44          decimal=decimal/10;
45       }
46       if (numeral=="nao")
47       {
48          decimal=1;
49          b=0;
50          //Ambos são parecidos o que muda é a condição de loop
51          //faça enquando valor for maior ou igual a decimal
52          while (valor>=decimal)
53          {
54
55             if (b==0)
56                 b=1;
57             else
58             {
59                //o valor de b é sempre multiplicado por 2
60                b*=2;
61                //a cada multiplicação de b multiplica-se decimal por 10
62                decimal*=10;
63             }
64          }
65       }
66       else if (numeral=="sim")
67       {
68          decimal=1;
69          b=0;
70          //faça enquando valor for maior ou igual a b
71          while (valor>=b)
72          {
73
74             if (b==0)
75                 b=1;
76             else
77             {
78                b*=2;
79                decimal*=10;
80             }
81          }
82       }
83       resultado=0;
84       valor2 = valor;
85       if (valor>1)
86       {
87          while(valor2>0)
88          {
89             // se for numeral faça
90             if (numeral.equals("sim"))
91             {
92                while(b>valor2)
93                {
94                   if ((b==1) || (valor2==0))
95                      break;
96                   else
97                   {
98                      //já que temos já o valor de decimal basta só dividí-lo por 10
99                      decimal/=10;
100                      //também dividimos b por 2
101                      b/=2;
102                   }
103                }
104                //após isso adicionamos decimal a resultado
105                resultado=resultado+decimal;
106                //e subtraímos b de valor
107                valor2-=b;
108             }
109             else
110             {
111                //Ambos são parecidos o que muda é a condição de loop
112                while(decimal>valor2)
113                {
114                      decimal/=10;
115                      b/=2;
116                }
117                //também os calculos são diferentes, mas a lógica é a mesma
118                resultado=resultado+b;
119                valor2-=decimal;
120             }
121          }
122       }
123       else //caso contrário resultado é 1
124          resultado=1;
125        //exibindo o resultado no prompt de comando
126        //onde %d significa exibição de uma variável inteira
127        // \n pulo de linha
128        System.out.printf("%d = %d\n", valor, resultado);
129
130     }//fim de main
131 }// fim da classe Ex2

Nenhum comentário:

Postar um comentário