Test Foro de elhacker.net SMF 2.1

Foros Generales => Dudas Generales => Mensaje iniciado por: m@o_614 en 26 Abril 2014, 05:21 AM

Título: número hexadecimal
Publicado por: m@o_614 en 26 Abril 2014, 05:21 AM
Saludos

tengo una duda de como hacer un procedimiento de conversión de un número decimal negativo a su hexadecimal, se que si el número fuera positivo con tan solo hacer divisiones sucesivas obtendría el resultado, pero cuál es el procedimiento para los negativos??

gracias
Título: Re: número hexadecimal
Publicado por: simorg en 26 Abril 2014, 05:46 AM
Mmm, por aquí te explican algo:

http://systeek.blogspot.com.es/2011/10/tema-2-sistemas-numericos-y-stack.html#!/2011/10/tema-2-sistemas-numericos-y-stack.html



Salu2.
Título: Re: número hexadecimal
Publicado por: Gh057 en 26 Abril 2014, 14:12 PM
hola m@o_614 , bueno para todo lo que es cálculo manual y también a modo educativo (e intuitivo, para mí aunque haya pasos de más, me es más facil y evito errores) es operar siempre con binarios, y luego pasar los resultados al formato solicitado.

obtengo el binario del valor absoluto del decimal (sin signo) y le aplico el complemento a dos, luego lo paso a hexadecimal obteniendo así el resultado.

para pasar a binario sin hacer divisiones como indiqué en algún post, utilizo una sucesión de las potencias de dos:

Citar.....  128 64 32 16 8 4 2 1

luego voy "prendiendo" los bits necesarios con unos de izquierda a derecha, dejando el resto con ceros para formar el número decimal sin signo.

ejemplo para el -131, obtengo el binario de 131, tomando dos bytes...

Citar00000000 1 0 0 0 0 0 1 1

su complemento a dos es... (hacer complemento a uno -invertir los bits, operacióin xor- y sumarle uno al resultado. como verás quedan todos prendidos los primeros, también a modo de facilitar los cálculos simplemente se agrega un bit en uno indicando el signo negativo.)

Citar111111111   0 1 1 1 1 1 0 1

y tomando de a cuatro bits, los paso a hexa... (si fuera a octal, van de a ternas, y completando con ceros si corresponde)

Citarff  7D

saludos.
(agrego) tomé dos bytes porque acabo de ver que la calculadora de windows toma el negativo todo en fff... y por ahí te confundía el resultado... lo correcto es usar el byte de datos + 1 bit indicando el signo, 0 positivo, 1 negativo... quedando entonces en papel el hexa, 1 7D.