representaçao de numeros negativos em hexa

como represento por exemplo, -5 em hexadecimal??
quando transformo usando Integer.toHexString(-5) ele me retorna
“FFFFFFFFFFFFFFFB” , e quando transformo de volta para decimal
usando Integer.parseInt(“FFFFFFFFFFFFFFFB”,16) me retorna um numero
enorme!! tem solução?
obrigado

na documentação do java na classe java.lang.Integer

[quote]toHexString(int i)
Returns a string representation of the integer argument as an unsigned integer in base 16.[/quote]

entao nao existe representaçao ? nao tem um metodo para trabalhar com numeros negativos? transformando , por exemplo, -5 em hexa, e dpois quando eu quiser transformar de volta para decimal me retornar -5?

o q acontece é que numeros negativos são armazenados em ‘complemento de 2’, ou seja, é dado um flip em cada bit da representacao positiva do numero (i.e., complemento) e depois é sinalizado o bit mais a esquerda como 1.
Por exemplo,
-0 = 111111111111111111111111111111111 (1 bit de sinal + 32 bits)
+0 = 000000000000000000000000000000000 (1 bit de sinal + 32 bits)

O zero possui duas representações binárias por isso o alcance das representações de int vão de -2^32 até 2^32 - 1

O q deve ocorrer é que na conversão pra hexa, octal e binario, esse bit não é levado em consideração! (talvez isso até seja correto) se quiser fazer um teste, use a calculadora do windows e faça essas conversões!

Uma solução para este teu problema seria verificar se o número é positivo ou negativo antes de convertê-lo e guardar essa informação pra quando for fazer o processo inverso.

(rá, pra isso q serviu estudar Análise Numérica na faculdade)

valeu! a sua dica de guardar a informaçao antes de transformar me ajudou bastante
abraço