2011-05-26 20 views
8

Necesito codificar un con signo entero como hexadecimal utilizando la notación de complemento de los dos. Por ejemplo, me gustaría convertirConvertir un decimal con signo a hexadecimal codificado con el complemento de dos

e.g. -24375 to 0xffffa0c9. 

Hasta ahora he estado trabajando en las siguientes líneas:

parseInt(-24375).toString(2) 
> "-101111100110111"  

Esto coincide con lo que Wolfram Alpha displays, pero no estoy seguro de cómo llegar a la firma Representación int de 24 bits del número (ffffa0c9).

He trabajado cómo tomar el número binario sin signo y representar esto como complemento a dos:

~ parseInt("101111100110111", 2) + 1 
> -23475 

pero no estoy seguro de obtener la representación binaria de este número para convertir a hexadecimal.

¿Alguna idea?

Respuesta

3
+6

Gracias - He utilizado la respuesta de @Tod de esta página: _ (ligeramente reordenada) _ 'num = -24.375; (Num <0 (0xFFFFFFFF + num + 1):? Num) .toString (16) ' resultados pueden ser [ver aquí] (http://jsconsole.com/?num%20%3D%20-24375% 3B% 20% 28num% 20% 3C% 200% 20% 3F% 20% 280xFFFFFFFF% 20% 2B% 20num% 20% 2B% 201% 29% 20% 3A%% 29.toString% 2,816% 29% 3B 20num) – diffa

Cuestiones relacionadas