Codigo decimal binario e hexdecimal em java

5 respostas
E

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.

desde ja agradeço
Eros Matheus

5 Respostas

AntonioDiego
public static void main(String args[]) {
        //decimal - base 10
        int decimal = 15;
        //para binario - base 2
        String binario = Integer.toBinaryString(decimal);
        System.out.println(decimal+" em binario é: " + binario);
        //para hexadecimal - base 16
        String hexadecimal = Integer.toHexString(decimal);
        System.out.println(decimal+" em hexadecimal é: " + hexadecimal);

        //Binario para decimal
        int base_binaria = 2;
        int base_hexadecimal = 16;
        int bdecimal = Integer.parseInt(binario, base_binaria);//da base binaria
        System.out.println(binario + " em decimal é: " + bdecimal);
        int hdecimal = 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

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:

import java.util.Scanner;

public class Inicial {
	public static void main(String[] args) {
		Scanner entrada = new Scanner(System.in);
		System.out.print("Digite um número em decimal: ");
		int numDecimal = entrada.nextInt();//lê o número
		System.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: ");
		int base = entrada.nextInt();//lê a base
		System.out.print("Digige o número na base escolhida: ");
		int numEmQualquerBase = 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

valeu galera me ajudou bastante… para o meu aprendizado…

Criado 16 de outubro de 2011
Ultima resposta 16 de out. de 2011
Respostas 5
Participantes 4