Binario para decimal

20 respostas
V

:?: :?: :?: :?:

Eai Galera como vão,

Preciso de um programa que faz essa converção de binario para decimal;

:?: :?: :?:

20 Respostas

R
import javax.swing.*;
public class transbase{//cria um a classe transbase
     public static void main( String args[]){
        int num=0;
        String obj1=" ";
        obj1=JOptionPane.showInputDialog(null,"Digite um numero Inteiro :");
        num=Integer.parseInt(obj1);
        convercao c;
        c = new convercao(num);
        c.binario();     
System.exit(0);
  }
}


-------------------------------------------------------------------------------------

// Rodrigo Reis


import javax.swing.*;


public class convercao {// crie uma classe convercao
  int num; 

public   convercao ( int n) {
          num=n;
 }
/*
public class binario2 { // Esse e de Decimal para Binario 
    
   public static int bin_int(String S){ 
      //String S = bin.toString(); 
      int j =0; 
      for(int i=0; i < S.length(); i++){ 
         j = j+ Integer.parseInt(S.substring(i,i+1))* (int)Math.pow(2,i); 
      } 
      return(j); 
   } 
    
   public static void main(String args[]){ 
      int k = bin_int(("11101000")); //Informe o Binario aqui
      System.out.println(k); 
      //System.exit(0); 
   } 
    
} 
*/


 public void binario( ){
     String obj1="";       
     int r ,cont, i;
     int vet[];
     vet=new int [100];  
      i=0;
	while (num != 0)
	  {
		 i= i + 1;
		 r=num % 2;
		 vet[i] = r;
		 num = num / 2;
	  }
obj1=" ";
           for(cont=i;cont>=1;cont--)
                       obj1+=String.valueOf(vet[cont]);
 JOptionPane.showMessageDialog(null,obj1,"Valor correspondente em Binário",JOptionPane.INFORMATION_MESSAGE);
 System.exit(0);
  }
}

[color="red"]editado por Felipe: use bbcode para melhorar a visualizacao do codigo[/color]

S

Olá,

como este portal trata de java, a seguir um exemplo da maneira mais prática de se transformar binários em decimal. Tirando o “overhead” do programinha abaixo, Integer.parseInt() faz toda a “mágica” (note que não é necessário nenhum cálculo, diferentemente da solução apresentada por RodReis - talvez não seja o que você/seu professor estejam esperando!):

public class Bin2Dec {

    public static void main(String args[]) {

        String bin = javax.swing.JOptionPane.showInputDialog(
                   "Informe um numero em binario (somente 1s e 0s)");
        try {
            javax.swing.JOptionPane.showMessageDialog(
                    null, bin + " ==> " + String.valueOf(Integer.parseInt(bin, 2)));
        }
        catch (NumberFormatException e) {
            javax.swing.JOptionPane.showMessageDialog(
                    null, bin + " nao eh binario nao...");
        }
        System.exit(0);
    }
}
C

pra converter pra numeros decimais e na base 10 ne???

Estao pq vc n usa

(Integer.parseInt(bin, 10)));

???

S

“Ratinho”:
pra converter pra numeros decimais e na base 10 ne???

Estao pq vc n usa

(Integer.parseInt(bin, 10)));

???

huhh?!?!?

bases (binario octal, decimal, hexadecimal) servem apenas para confundir processadores de humanos!

computadores não tem nada disso. só guardam bits.

Por outro lado, e por convenção, o padrão do java aspresentar números para humanos é na base decimal.

Então, quando um método como parseInt retorna um inteiro, este será apresentado na base dez.

O que pode variar é o que passamos para este método.

Por exemplo, se temos um binário, “10” (2 base 10), e queremos descobrir quanto vale em decimal, precisamos ser bem explícitos e informar ao método o quê estamos passando.

Algo assim:

“Senhor ParseInt, favor converter “10”, que é binário, para decimal”

poderá ser traduzido para:

parseInt( “10”, “que é binário”)

mas, os especialistas que desenvolveram a linguagem não quiseram correr o risco que expressões como a acima poderiam gerar, e convencionaram que a base do argumento passado seria definida com inteiros, 2, 8, 10 , 16, (e como o sdk não coloca nenhuma restrição, podemos também inventar nossas próprias bases) daí, se testarmos “10” com diversas bases, teremos resultados diferentes.

Agora, se temos “10” e queremos o inteiro na base 10 (?), basta um parse simples, como em

parseInt(“10”)

mas, se queremos saber quanto “10” base 2 corresponde em decimais fazemos

parseInt(“10”, 2)

que resulta em 2 na base 10.

V

Boa tarde

Obrigado pela boa vontade é que tem um probleminha, eu não sei nada de java só conheco Delphi, VB, Asp.

M

æ VBK81, faz o seguinte:

Cria um arquivo chamado BinToDec.java com o seguinte:
public class BinToDec {
  public static void main(String args[]){
    System.out.print(args[0] + " = ");
    System.out.println(Integer.parseInt(args[0], 2));
    System.exit(0);
  }
}
Crie então um arquivo de lote (.bat) com o seguinte:
@echo off
javac BinToDec.java

java BinToDec 1010010
java BinToDec 1010
java BinToDec 101111

pause

Detalhe você deverá ter o j2sdk para compilar o código, isso vc deve saber não é ? :wink:

Então o que o bat vai fazer ?
1º Compilar o código que você criou e já sair executando com alguns valores binários. Hah e ele dá um pause para vc final o lote...

Qualquer dúvida é só postar...
Hah e bem vindo ao mundo Java...

Abraço,
Maicon

V

Em qual programa que eu crio aqules arquivos

M

no melhor editor que existe…

NOTEPAD :lol:

Tranquilo ?

Abraço,
Maicon

V

Criei no Bloco de notas os dois arquivos

1º BinToDec.java

2º aqui a duvida é BinToDec.bat

M

VBK81, é o seguinte:

Esqueci de lhe perguntar mas vc usa Windows ou Linux ?

Quanto ao .java tá blz, é só criar esse arquivo com o conteúdo que lhe falei, tanto faz sendo windows ou linux.

Se vc está mexendo em windows e vc criar um arquivo com extensão .bat vc terá um executável de dos, aí ele faz a compilação conforme a segunda linha q lhe passei e depois os testes.
Mas se vc estiver mexendo em linux aí é outra coisa, dá pra fazer comandos com sh…

O bat é só um executável dos para rodar todas as linhas, mas se vc quiser ir no msdos e fazer tudo no braço, linha por linha é só executar as linhas que lhe passei.

Abraço,
Maicon

V

APESAR DE TER INSTALADO O LINUX EU TO USANDO O WINDOWS

QUANDO EU RODO O PROGRAMA APARECE QUATRO VEZES ESCRITA A LINHA

COMANDO OU NOME DE ARQUIVO INVALIDO

M

VBK81,

Primeiramente é o seguinte:
Seu windows não está conseguinte encontrar nem o javac.exe, nem o java.exe, isso quer dizer que ou vc não está com o java sdk instalado, ou vc não setou as variáveis de ambiente corretamente…

O que fazer ?
Se vc não tem java instalado vc deve baixar o jsd do site da sun ( java.sun.com ) e obviamente instalá-lo, mas se vc tiver o java instalado uma solução é colar os dois arquivos na pasta bin do java, ou onde se encontram os arquivos javac.exe e java.exe para execução (Se preferir use o localizar do windows) e execute naquela pasta mesmo, garanto que da certo.

Hah, só gostaria de lhe pedir um favorzinho: Evite escrever em caixa alta (todas as letras em maiúsculo) pois dá impressão que vc está gritando com a passoa a quem vc se dirige, creio que não foi sua intenção… Corrija-ma se eu estiver errado.

Abraço,
Maicon

V

Bah foi mal nem pensei por esse lado desculpa qualquer coisa.

o java.exe eu achei
o javac.exe eu não achei

M

Tranqüilo VBK81.

Você deve ter instalado na sua máquina o JRE, que é somente os executáveis para rodar programas java, mas não para compilar.

Basicamente:
JRE = Virtual Machine para rodar programas Java.
J2SDK = Virtual Machine para rodar programas + executáveis para compilar códigos para para bytecode (java para class).

Resultado, vc vai ter que gastar um pouquinho de banda e baixar o J2SDK do site da SUN… :lol:

Depois do j2sdk instalado vc acha com certeza.

Qualquer coisa só postar aí, blz ?

Abraço,
Maicon

C

Ruindows!!!

NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

:wink: :wink: :wink: :wink: :wink: :wink: :wink:

V

To baixando esse ai, vê se ta certo?

J2SE v 1.4.2_05 SDK

C

E sim kra…

Tp… depois q vc baixar, n esquece d setar as variaveis!!!

V

Como assim variaveis???

Mudando de assunto pelo jeito você usa linux, sabe onde eu posso achar o driver para meu modem

Uso o Conectiva linux 10
e o meu modem é o Intel Ham data Fax modem

M

Números Inteiros

Um número N na base “B” pode ser escrito como uma série de potências da própria base:

quote = anB^n + an-1B^n-1 + … + a0B^0
Exemplo:
(150) na base 10 = 1
10^2 + 510^1 + 010^0
(100011) na base 2 = 12^5 + 02^4 + 02^3 + 02^2 + 12^1 + 12^0

2^5 = 32
2^1 = 2
2^0 = 1
assim o número 100011 na base 2 é igual a 35 em decimal

Observe que os coeficientes da série são elementos da base que formarão o número[/quote]

Essa regra serve para converter de qualquer base para qualquer base. Eu fiz um programa em C++ para conversào de bases se alguém quiser dar uma olhadinha é só me pedir que mando no e-mail

C

Kra… c ja deu uma olhada em

http://www.linmodens.org

E ja deu uma pesquisado no google???

Criado 6 de setembro de 2004
Ultima resposta 12 de set. de 2004
Respostas 20
Participantes 6