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?
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