Esta es más una pregunta para los informáticos, pero esencialmente se basa en la representación de los personajes en las computadoras. También voy a suponer que usted sabe cómo funcionan las asignaciones y los accesos de matriz, y también que comprende qué valores puede tomar un dígito hexadecimal (es decir, 0-9, AF).
Algunos hechos para comenzar (no sé cuánto sabe sobre los tipos de datos y tal):
– Las computadoras funcionan con números binarios
– Tenemos un tipo de datos llamado char (que representa caracteres) que es esencialmente una enumeración entre caracteres y números legibles por humanos utilizando sistemas de representación como ASCII.
– También tenemos otros tipos de datos, como int (que representa enteros).
– Podemos traducir entre algunos tipos de datos utilizando un método llamado casting.
- ¿Cuáles son tus consejos para estudiar matemáticas como adulto que aprende por tu cuenta?
- ¿Puedes predecir la cantidad de pasos necesarios para resolver un enunciado matemático?
- ¿Cuántas veces es 1,000 más grande que 1?
- ¿Cómo puedo hacer que explicar el concepto de "pi" a un niño de diez años sea más interesante?
- ¿Cuán crucial es calificar para USAMO si quiero especializarme en matemáticas en una Ivy-League?
Aquí está la tabla de ASCII-128:
Digamos hex [i] = ‘0’ y queremos establecer num = hex [i]. Entonces claramente num = ‘0’. Sin embargo, ‘0’ es diferente de 0. 0 es el entero (int) cero mientras que ‘0’ es el carácter que representa cero. Entonces, en realidad, lo que hemos hecho se hace num = 48 (usando la tabla anterior). Claramente no queremos esto, así que necesitamos restar 48 del hexadecimal [i] para hacer num = 0. Dado que 48 = ‘0’ entonces podemos decir num = hex [i] – ‘0’, y podemos ver Esto claramente funciona para todos los enteros 0-9 ya que son consecutivos en la tabla ASCII.
Desafortunadamente, las letras mayúsculas AF no se ejecutan consecutivamente después de las 9, sino que comienzan a los 65, por lo que nuestro trabajo no está terminado. Sin embargo, lo que podemos hacer es manejar estos casos de manera diferente, por lo que si hexadecimal [i] = ‘A’, por ejemplo, podemos hacer lo mismo desde el párrafo anterior. En este caso, queremos num = 10, así que como hex [i] = 65 necesitamos restar 55 para llegar a 10.
Quizás se pregunte por qué deberíamos usar ‘0’ y ‘7’ como compensaciones. Creo que esto es para ofrecer portabilidad entre las diferentes representaciones de personajes que puede obtener dependiendo de la máquina que esté utilizando.
Espero que todo esté claro, si no, estoy feliz de ayudar y editar mi respuesta aún más.