Bom dia gostaria de saber se e possivel criar um programa em java que me diponibilize os codigos binario decimal e hexadecimal.
Estou estudando intalação e gestao de redes informatica sei que e totalmente diferente de programação.
Tenho umas noções em programação java por isso resolvi tentar fazer um programa que quando eu colocar um codigo binario o programa me de o codigo decimal e hexadecimal sera que e possivel sei que e um pouco dificil, mas acho que vale apena tentar.
Gostaria que me ajudacem nesse quebra cabeça
Por que estou estudando sistemas de numeração ( binario, decimal, Hexadecimal )e quero poder transportar isso para um programa em java.
publicstaticvoidmain(Stringargs[]){//decimal - base 10intdecimal=15;//para binario - base 2Stringbinario=Integer.toBinaryString(decimal);System.out.println(decimal+" em binario é: "+binario);//para hexadecimal - base 16Stringhexadecimal=Integer.toHexString(decimal);System.out.println(decimal+" em hexadecimal é: "+hexadecimal);//Binario para decimalintbase_binaria=2;intbase_hexadecimal=16;intbdecimal=Integer.parseInt(binario,base_binaria);//da base binariaSystem.out.println(binario+" em decimal é: "+bdecimal);inthdecimal=Integer.parseInt(hexadecimal,base_hexadecimal);System.out.println(hexadecimal+" em decimal é: "+hdecimal);}
ViniGodoy
Sim, é possível. E é bem fácil também.
A função String.format já tem formações específicas para hexadecimal e octal.
A função Integer.parseInt possui uma assinatura que converte um número em qualquer base, para um número em decimal.
Se quiser fazer na mão, é possível usar os operadores de bits (&), ou o de resto (%).
Mas, já que você estuda redes, talvez o mais interessante mesmos seja baixar o Wireshark.
M
melges
A classes Integer já possui os métodos toBinaryString, toHexString e toOctalString que recebem um decimal e retornam uma String com o número nas bases citadas. Por retornar String vc não pode manipulá-los.
Para fazer o contrário, representar um hex vc deve simplesmente ler um numero com 0x na frente, ou seja, 0xF é a representaçao de 15 em hex. O mesmo vale para octal (colocando-se 0 na frente do número). Só não sei como fazer para binário. Se alguem souber... Esta forma não funciona se vc tiver lendo pelo teclado, apenas para valores já definidos no seu código.
A própria classe Integer possui o método parseInt que quando passado como parâmetro uma string com o valor na devida base e a base retorna o correspondente em decimal.
Veja se o seguinte trecho de código ajuda:
importjava.util.Scanner;publicclassInicial{publicstaticvoidmain(String[]args){Scannerentrada=newScanner(System.in);System.out.print("Digite um número em decimal: ");intnumDecimal=entrada.nextInt();//lê o númeroSystem.out.println("Valor em binário: "+Integer.toBinaryString(numDecimal));System.out.println("Valor em hex: "+Integer.toHexString(numDecimal));System.out.println("Valor em octal: "+Integer.toOctalString(numDecimal));System.out.println("Digite a base: ");intbase=entrada.nextInt();//lê a baseSystem.out.print("Digige o número na base escolhida: ");intnumEmQualquerBase=Integer.parseInt(entrada.next(),base);System.out.println("Representação em decimal: "+numEmQualquerBase);}}
ViniGodoy
Em binário só existe a partir do Java 7. É bom ressaltar que você está falando aqui de declaração de literais (ou seja, números dentro do código). Por exemplo:
int x = 10; //Valor de x = 10 decimal
int y = 0xFF; //Valor de y = 255 decimal
int z = 0b1010_1010; //Java 7: Valor de z = 170 decimal. Os _ são ignorados.
E
Eros_Matheus
valeu galera me ajudou bastante… para o meu aprendizado…