¿Cuál es el significado de num = hex [I] – ‘0’ en este programa y también el significado de num = hex [I] -55? Este programa es para convertir un número hexadecimal a un número decimal?

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.

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.

More Interesting

¿Es la prueba de Cantor (argumento diagonal) realmente correcta?

¿Qué es el 'sistema de calificación Elo', que se explica detalladamente con ejemplos y casos?

¿Qué debo hacer si descubrí un teorema matemático?

¿Es la matemática un idioma?

¿Cuál fue el problema matemático que el personaje de Matt Damon resolvió como conserje en una escena temprana en Good Will Hunting?

Cómo simplificar este radical sin una calculadora

¿Cuál es el significado del grupo fundamental Etale?

Sam tiene 3000 plátanos. Los lleva al mercado a 1000 km de distancia en su único camello. El camello solo puede transportar 1000 plátanos a la vez. El camello come 1 plátano por cada 1 km que viaja. ¿Cuál es el número máximo de bananas que Sam puede llevar al mercado?

¿Qué significa derivar una fórmula?

¿Cómo hicieron los antiguos israelitas las matemáticas?

¿Debo usar una calculadora para el cálculo, o hacerlo en mi mente?

Encuentre la cantidad de arreglos que se pueden hacer tomando 4 letras de la palabra ENTRADA.

En matemáticas, ¿cuál es la función de una estrategia dividida?

¿Es posible argumentar que Occidente ha superado a Oriente porque su alfabeto permitió una notación matemática más conveniente?

¿Qué tan probable es que un estudiante de matemáticas no pueda resolver los problemas de la OMI? ¿Hay miedo de la vergüenza de ser un doctorado en matemáticas? ¿Quién no puede resolver los problemas que pueden hacer los estudiantes de secundaria?