número hexadecimal

Iniciado por m@o_614, 26 Abril 2014, 05:21 AM

0 Miembros y 1 Visitante están viendo este tema.

m@o_614

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


Gh057

#2
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. 
4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...