Binario para decimal

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

Eai Galera como vão,

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

:?: :?: :?:

[code]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);
}
}[/code]

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

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);
    }
}

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

Estao pq vc n usa

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

???

[quote=“Ratinho”]pra converter pra numeros decimais e na base 10 ne???

Estao pq vc n usa

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

???[/quote]

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.

Boa tarde

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

æ 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:

[code]@echo off
javac BinToDec.java

java BinToDec 1010010
java BinToDec 1010
java BinToDec 101111

pause[/code]

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

Em qual programa que eu crio aqules arquivos

no melhor editor que existe…

NOTEPAD :lol:

Tranquilo ?

Abraço,
Maicon

Criei no Bloco de notas os dois arquivos

1º BinToDec.java

2º aqui a duvida é BinToDec.bat

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

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

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

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

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

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

Ruindows!!!

NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

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

To baixando esse ai, vê se ta certo?

J2SE v 1.4.2_05 SDK

E sim kra…

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

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

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