Cómo convertir -302 de decimal a hexadecimal

El número decimal [matemáticas] -302 [/ matemáticas] se representa como [matemáticas] -12E [/ matemáticas] en la base 16. ¿Cómo lo sé?

Bueno, dejé que Google y Wolfram Alpha hicieran el trabajo sucio por mí (busque -302 en la base 16 ). Ambos están de acuerdo en que es [matemáticas] -12E [/ matemáticas].

También podría haber utilizado cualquier cantidad de lenguajes de programación o (estoy seguro) sitios web dedicados a este tipo de cosas para obtener la misma respuesta.

Si está por encima de esas tácticas baratas y desea resolver la respuesta por sí mismo, le sugiero el siguiente enfoque:

  • Ignore la señal por ahora, la agregaremos más tarde.
  • Encuentre la potencia más grande de [matemáticas] 16 [/ matemáticas] que no sea mayor que [matemáticas] 302 [/ matemáticas]. Es [matemática] 256 [/ matemática] ([matemática] 16 ^ 2) [/ matemática], lo que significa que nuestro número tiene tres dígitos ([matemática] 2 + 1 [/ matemática]) – la potencia del primer dígito es [matemáticas] 0 [/ matemáticas].
  • Encuentre un número entero [math] n [/ math] tal que [math] n \ times16 ^ 2 \ leq 302 [/ math]. Claramente, [matemática] n [/ matemática] debe ser [matemática] 1 [/ matemática], por lo que el primer dígito es un hexadecimal [matemática] 1 [/ matemática].
  • Repita el proceso anterior dos veces más (para el segundo y tercer dígitos), una vez que haya restado [math] 1 \ times16 ^ 2 [/ math] del número original [math] 302 [/ math], dejándonos con [ matemáticas] 302 – 256 = 46 [/ matemáticas].
  • Lo guiaré solo para estar seguro: [matemática] 16 ^ 1 [/ matemática] encaja en [matemática] 46 [/ matemática] dos veces, por lo que el siguiente dígito es [matemática] 2 [/ matemática]. Por lo tanto, el último dígito es [matemático] 46 – 2 \ times16 ^ 1 = 14 [/ matemático], que es [matemático] E [/ matemático] en la base 16.
  • Vuelva a agregar el letrero y llegaremos a [math] -12E [/ math]. Voilà.

En resumen, convertir un número [math] n [/ math] en base [math] b [/ math] es una simple cuestión de ajustar múltiplos de las potencias enteras sucesivas de [math] b [/ math] en [math] n [/ math], asegurándonos de llenar los vacíos con ceros.

Ejecute este pequeño programa (está en c)

#include
int main () {
int val = -302;
printf (“decimal =% d hex =% x \ n”, val, val);
}

Obtendrá obtendrá la salida

decimal = -302 hexadecimal = fffffed2

Los valores negativos se almacenan en lo que se llama complemento de 2. Básicamente, lo que haces para un número negativo es voltear todos los bits y agregar uno. Ver complemento de dos – Wikipedia

La presentación en base 16 es -12E.

Si está preguntando acerca de la presentación en memoria o en el registro de una computadora, es FFFFFED2

More Interesting

Criptografía: ¿Cuál es una explicación intuitiva de una red de sustitución-permutación?

¿Cuáles son algunos proyectos impresionantes de Inteligencia Artificial, que son menos conocidos?

¿El nacimiento de la placa base de la computadora provino de estudiar el Lukasa de alguna manera?

¿Cómo es para los ingenieros de aprendizaje automático cuando están 'en la zona'?

Si una computadora almacena una dirección de 8 bits para 1 bit de datos en la RAM, ¿dónde y cómo la computadora aborda la dirección de 8 bits?

¿Por qué el problema de detención es difícil en np?

¿Podemos resolver el problema DISHOWN usando C ++ STL? ¿Si es así, entonces cómo?

¿Cuáles son algunas de las mejores prácticas para escribir paquetes de software específicamente para aplicaciones científicas y aprendizaje automático? ¿Serían relevantes las mismas prácticas utilizadas en el desarrollo de software ágil?

¿Las computadoras de alto rendimiento usan unidades híbridas (SSHD)?

¿Debo comprar o construir un sistema informático para satisfacer mis necesidades?

¿Cuál es el alcance futuro de la visión por computadora?

Arquitectura del procesador: ¿Cuál es la diferencia entre las CPU de 32 bits y las de 64 bits? ¿Cómo aumenta el rendimiento de las CPU de 64 bits?

Soy un estudiante de último año de ingeniería en ciencias de la computación en busca de pasantías en desarrollo web. ¿Cuáles son los pasos que debo seguir para obtener uno? ¿Cómo debo buscar empresas? ¿Cuáles son las habilidades que debo adquirir antes de solicitar una?

¿Qué es mejor para la informática y el emprendimiento, Stanford, MIT, Harvard o UCB? ¿Por qué?

Cómo aumentar el rendimiento de mi computadora manualmente