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