Número hexadecimal 3a en el sistema numérico decimal. código hexadecimal

sistema numérico hexadecimal(también conocido como código hexadecimal) es un sistema numérico posicional con una base entera de 16. El término hex (pronunciado hex, abreviatura de inglés hexadecimal) también se utiliza a veces en la literatura. Los dígitos de este sistema numérico se suelen utilizar en los números arábigos del 0 al 9, así como en los primeros caracteres del alfabeto latino A-F. Las letras corresponden a los siguientes valores decimales:

  • *A-10;
  • *B—11;
  • *C—12;
  • *D-13;
  • * E - 14;
  • *F-15.

Así, diez números arábigos, junto con seis letras latinas, forman los dieciséis dígitos del sistema.

Por cierto, en nuestro sitio web puede convertir cualquier texto a código decimal, hexadecimal o binario utilizando la Calculadora de códigos en línea.

Solicitud. código hexadecimal ampliamente utilizado en programación de bajo nivel, así como en diversos documentos de referencia informática. La popularidad del sistema se justifica por las soluciones arquitectónicas de las computadoras modernas: tienen un byte (que consta de ocho bits) como unidad mínima de información, y el valor de un byte se escribe convenientemente utilizando dos dígitos hexadecimales. El valor del byte puede variar de #00 a #FF (de 0 a 255 en notación decimal); en otras palabras, usando código hexadecimal, puede escribir cualquier estado del byte, mientras no haya dígitos "extra" que no se utilicen en la grabación.

Codificado Unicódigo Se utilizan cuatro dígitos hexadecimales para registrar el número de carácter. La notación de color RGB (rojo, verde, azul) también suele utilizar código hexadecimal (por ejemplo, #FF0000 es una notación de color rojo brillante).

Un método para escribir código hexadecimal.

Manera matemática de escribir.. En notación matemática, la base del sistema se escribe en forma decimal como un subíndice a la derecha del número. La notación decimal del número 3032 se puede escribir como 3032 10, en el sistema hexadecimal este número tendrá la notación BD8 16.

En la sintaxis de los lenguajes de programación.. La sintaxis de diferentes lenguajes de programación establece de manera diferente el formato para escribir un número usando código hexadecimal:

* La sintaxis de algunas variedades de lenguaje ensamblador utiliza la letra latina “h”, que se coloca a la derecha del número, por ejemplo: 20Dh. Si un número comienza con una letra latina, se coloca un cero delante, por ejemplo: 0A0Bh. Esto se hace para distinguir valores que usan constantes de constantes. código hexadecimal;

* Otros tipos de ensamblador, así como Pascal (y sus variantes como Delphi) y algunos dialectos básicos, utilizan el prefijo "$": $A15;

* En el lenguaje de marcado HTML, así como en archivos CSS en cascada, se utiliza el prefijo “#” para indicar el color en formato RGB con notación hexadecimal: #00DC00.

¿Cómo convertir código hexadecimal a otro sistema?

Convertir de hexadecimal a decimal. Para realizar una operación de conversión del sistema hexadecimal al sistema decimal, debe representar el número original como la suma de los productos de los dígitos del número hexadecimal y la potencia de la base.

SS binario

SS hexadecimal

Por ejemplo, necesitas traducir el número hexadecimal A14: tiene tres dígitos. Usando la regla, lo escribimos como una suma de potencias con base 16:

A14 16 = 10,16 2 + 1,16 1 + 4,16 0 = 10,256 + 1,16 + 4,1 = 2560 + 16 + 4 = 2580 10

Conversión de números de binario a hexadecimal y viceversa.

Se utiliza una mesa de cuaderno para la traducción. Para convertir un número del sistema binario al decimal, debe dividirlo en tétradas separadas de derecha a izquierda y luego, usando la tabla, reemplazar cada tétrada con el dígito hexadecimal correspondiente. Además, si el número de dígitos no es múltiplo de cuatro, entonces es necesario sumar el número correspondiente de ceros a la derecha del número para que el número total de dígitos binarios sea múltiplo de cuatro.

Tabla de cuadernos para traducción.

Para convertir de hexadecimal a binario, debe realizar la operación inversa: reemplazar cada dígito con una tétrada de la tabla.

SS binario

SS octal

Ejemplo conversión de hexadecimal a binario: A5E 16 = 1010 0101 1110 = 101001011110 2

Ejemplo conversión de binario a hexadecimal: 111100111 2 = 0001 1110 0111 = 1E7 16

En este ejemplo, la cantidad de dígitos en el número binario original no era cuatro (9), por lo que se agregaron ceros a la izquierda para obtener una cantidad total de dígitos de 12.

Traducción automática. Se puede realizar una conversión rápida del sistema numérico hexadecimal a uno de los tres sistemas populares (binario, octal y decimal), así como la conversión inversa, utilizando una calculadora estándar incluida con el sistema operativo Windows. Abra la calculadora, seleccione Ver -> Programador en el menú. En este modo, puede configurar el sistema numérico actualmente en uso (ver menú a la izquierda: Hex, Dec, Oct, Bin). En este caso, cambiar el sistema numérico actual produce automáticamente una traducción.

Muchos usuarios de computadoras entienden que una computadora opera en un sistema numérico binario. Tradicionalmente, los estados de un sistema binario están representados por los números 0 y 1, aunque, más precisamente, cada estado indica la presencia o ausencia de una señal, es decir, sería más correcto llamar a los estados "apagado" y "encendido". , o “no” y “sí”. El estado "apagado" o "no" corresponde al número 0, y el estado "encendido" o "sí" corresponde al número 1. Los usuarios comunes generalmente no necesitan comprender completamente la estructura de la computadora, sin embargo, el binario El sistema numérico se hace sentir en forma de diversas restricciones basadas en potencias de dos. Una versión más compacta del sistema binario se llama hexadecimal. El número dieciséis es la cuarta potencia de dos. De esto se deduce que es muy sencillo convertir secuencias binarias largas de ceros y unos en hexadecimales cortas. Para hacer esto, simplemente divida la secuencia binaria en grupos de cuatro dígitos (dígitos) comenzando con el dígito menos significativo (a la derecha) y reemplace cada grupo con el valor hexadecimal correspondiente.

El sistema hexadecimal se suele utilizar para facilitar la percepción de datos binarios, ya que las conversiones del sistema hexadecimal al sistema binario y viceversa se realizan simplemente reemplazando cadenas. La computadora trabaja exclusivamente con secuencias binarias, y la notación hexadecimal de esta secuencia es cuatro veces más compacta, ya que este sistema tiene base 16 (2 16) y binario 2. La secuencia binaria puede ser bastante engorrosa. Por ejemplo, escribir el número 513 requiere diez dígitos binarios (1000000001), pero sólo tres en hexadecimal (201). Sin embargo, para representar cualquier número hexadecimal, se requieren dieciséis símbolos diferentes, en lugar de los diez que se utilizan en el sistema numérico decimal con el que estamos familiarizados. Los primeros diez caracteres son caracteres en el rango de 0 a 9, el resto son letras del alfabeto latino en el rango de A a F. Las letras generalmente (pero no siempre) se escriben en mayúsculas (mayúsculas) en notación hexadecimal del número. Los primeros diez caracteres (del 0 al 9) se escriben de manera similar a los números del sistema numérico decimal y corresponden a ellos. Las letras en el rango de la A a la F corresponden a valores en el rango de 10 a 15.

Consideremos la correspondencia de números del 0 al 15 en sistemas numéricos hexadecimales y binarios.

Notación decimal Notación hexadecimal Notación binaria
0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
10 A 1010
11 B 1011
12 C 1100
13 D 1101
14 mi 1110
15 F 1111

Las entradas de 10, 11, etc. en los sistemas decimal, binario y hexadecimal no se corresponden entre sí. Veamos un pequeño ejemplo. Tengamos un número hexadecimal 1A5E. Para convertir a binario, simplemente reemplace los dígitos hexadecimales con los grupos binarios correspondientes. El resultado será 0001 1010 0101 1110. Si eliminamos los ceros insignificantes delante del número y lo escribimos sin separadores, obtenemos 1101001011110. Para la traducción inversa, dividimos el número en grupos de cuatro dígitos, comenzando por el más bajo ( en el lado derecho), y también por conveniencia agregamos ceros insignificantes en el grupo más alto a 4 rangos. Obtenemos 0001 1010 0101 1110. Reemplazamos los grupos con los valores hexadecimales correspondientes, obtenemos 1A5E.

Para convertir un número hexadecimal en una representación decimal, puede utilizar el esquema mediante el cual escribimos números decimales. En un número decimal, cada dígito representa la correspondiente potencia de diez, comenzando desde cero y aumentando de derecha a izquierda. Por ejemplo, el número decimal 123 significa 1*10 2 + 2*10 1 + 3*10 0. Usando un método similar, convertimos el número 1A5E al sistema numérico decimal. En el sistema numérico hexadecimal, así como en el sistema numérico decimal, cada dígito denota la potencia correspondiente del número dieciséis, comenzando desde cero y aumentando de derecha a izquierda. Los caracteres 1 y 5 en hexadecimal corresponden a los valores 1 y 5 en decimal, y los caracteres A y E corresponden a 10 y 14. Entonces 1A5E se puede representar en decimal como 1*16 3 + 10*16 2 + 5 *16 1 + 14*16 0 = 6750. Sin embargo, para evaluar números hexadecimales no es necesario convertirlos a decimal. Las reglas de comparación, suma y multiplicación en este sistema son las mismas que en el sistema decimal, lo principal es no olvidar que cada dígito puede contener valores del 0 al 15. Para convertir rápidamente números entre sistemas numéricos, puede utilizar una calculadora estándar en Windows, para ello basta con En el modo avanzado de la calculadora, seleccione un sistema numérico, ingrese un número en él y seleccione el sistema numérico deseado en el que mostrar el resultado.

Debido a que los números hexadecimales exclusivamente numéricos se confunden fácilmente con los números decimales, generalmente se marcan de una manera que deja claro que se utiliza notación hexadecimal. Las entradas hexadecimales generalmente se marcan agregando una "h" minúscula al final o agregando un prefijo "0x" antes del número. Por lo tanto, el número hexadecimal 1A5E se puede escribir como 1A5Eh o 0x1A5E, donde una "h" al final o un "0x" al principio indican que se utiliza la notación hexadecimal.

Notación hexadecimal ("Hex")- una forma conveniente de representar valores binarios. Así como el sistema numérico decimal tiene una base de diez y el sistema numérico binario tiene una base de dos, el sistema numérico hexadecimal tiene una base de dieciséis.

El sistema numérico de base 16 utiliza los números del 0 al 9 y las letras de la A a la F. La figura muestra los valores decimales, binarios y hexadecimales equivalentes para los números binarios del 0000 al 1111. Nos resulta más fácil expresar un valor como uno dígito hexadecimal que como cuatro bits

Entendiendo los bytes

Dado que 8 bits (bytes) son la agrupación binaria estándar, los números binarios del 00000000 al 11111111 se pueden representar en notación hexadecimal como los números del 00 al FF. Los ceros a la izquierda siempre se muestran para completar la representación de 8 bits. Por ejemplo, el valor binario 0000 1010 en hexadecimal sería 0A.

Representación de valores hexadecimales

Tenga en cuenta: Es importante distinguir los valores hexadecimales de los valores decimales para los caracteres del 0 al 9, como se muestra en la figura.

Los valores hexadecimales generalmente se representan en el texto mediante un valor precedido por 0x (como 0x73) o mediante el uso de un subíndice de 16. Con menos frecuencia, pueden ir seguidos de la letra H, como 73H. Sin embargo, debido a que el texto de subíndice no se reconoce en la línea de comando ni en entornos de programación, están precedidos por "0x" (cero X) en la representación técnica de números hexadecimales. Por lo tanto, los ejemplos anteriores se mostrarían como 0x0A y 0x73 respectivamente.

La notación hexadecimal se utiliza para representar direcciones MAC Ethernet y direcciones IP versión 6.

Conversiones hexadecimales

Convertir números entre valores decimales y hexadecimales es sencillo, pero dividir o multiplicar rápidamente por 16 no siempre es conveniente. Si tales conversiones son necesarias, generalmente es más fácil convertir un valor decimal o hexadecimal a binario y luego convertir el valor binario a decimal o hexadecimal, según lo que desee obtener.

Con práctica, es posible reconocer los patrones de bits binarios que corresponden a valores decimales y hexadecimales. La figura muestra estos patrones para algunos valores de 8 bits.

Para escribir programas en ensamblador, es necesario comprender el sistema numérico hexadecimal. No tiene nada de complicado. Usamos el sistema decimal en la vida. Estoy seguro de que todos lo sabéis, así que intentaré explicar el sistema hexadecimal usando una analogía con el sistema decimal.

Entonces, en el sistema decimal, si agregamos un cero a cualquier número de la derecha, este número aumentará 10 veces. Por ejemplo: 1 x 10 = 10; 10 x 10 = 100; 100 x 10 = 1000, etc. En este sistema utilizamos números del 0 al 9, es decir. diez números diferentes (de hecho, por eso se llama decimal).

En el sistema hexadecimal utilizamos dieciséis "dígitos". Escribí específicamente la palabra “dígitos” entre comillas, porque... No solo usa números. Y realmente, ¿cómo puede ser eso? Me explico: del 0 al 9 contamos igual que en decimal, pero luego quedará así: A, B, C, D, E, F. El número F no es difícil. cuenta, será igual a 15 en el sistema decimal (ver Tabla 1).

Número decimal

numero hexadecimal

Tabla 1. Sistemas decimales y hexadecimales.

Por lo tanto, si agregamos un cero a la derecha de cualquier número en el sistema hexadecimal, entonces este número aumentará en16 una vez.

Ejemplo 1: 1 x 16 = 10; 10 x 16 = 100; 100 x 16 = 1000, etc.

¿Pudiste distinguir los números hexadecimales de los números decimales en el Ejemplo 1? Y de esta serie: 10, 12, 45, 64, 12, 8, 19? Pueden ser hexadecimales o decimales. Para evitar confusiones y que el ordenador pueda distinguir claramente un número de otro, en ensamblador se acostumbra colocar el símbolo ho H después de un número hexadecimal ( H es una abreviatura de inglés. hexadecimal (hexadecimal). Por brevedad, a veces se le llama simplemente Maleficio ) . Y no pongas nada después del decimal. Porque Los números del 0 al 9 en ambos sistemas tienen el mismo significado, entonces los números escritos como 5 y 5h son iguales.

Eso. El ejemplo 1 (ver arriba) sería más correcto escribirlo así: 1 x 16 = 10h; 10h x 16 = 100h; 100h x 16 = 1000h. O así: 1h x 10h = 10h; 10h x 10h = 100h; 100h x 10h = 1000h.

En números posteriores veremos por qué es necesario el sistema hexadecimal. Por ahora, para nuestro programa de ejemplo, que se analizará a continuación, necesitamos saber acerca de la existencia de números hexadecimales.

Entonces, resumamos. El sistema numérico hexadecimal consta de 10 dígitos (del 0 al 9) y 6 letras del alfabeto latino (A, B, C, D, E, F). Si sumamos un cero a la derecha de cualquier número en el sistema hexadecimal, entonces este número aumentará en16 una vez. Es muy importante entender este tema., ya que lo usaremos constantemente al escribir programas.

Ahora un poco sobre cómo construiré ejemplos en Asamblea. No es del todo conveniente presentarlos en formato HTML, por lo que primero estará el código del programa con líneas numeradas, e inmediatamente después habrá explicaciones y notas.

Como eso:

líneas Código de programa
(1) movimiento ah,9

Explicaciones:

En la línea (1) hacemos esto y en la línea (15) hacemos aquello.

Gran petición: ¡NO copie programas de una página al portapapeles y luego los pegue en el Bloc de notas (o en cualquier otro lugar)! Vuelva a escribirlos manualmente en un editor de texto. Si tiene una impresora, seleccione el programa, imprima el fragmento seleccionado y luego transfiéralo al editor desde el papel. ¡Todos los ejemplos deben escribirse usted mismo! Esto acelerará la memorización de operadores.

Y además. No hay diferencia entre letras minúsculas y MAYÚSCULAS en ensamblador. Registros de la forma:

El ensamblador los percibe de la misma manera. Por supuesto, puede obligar al ensamblador a distinguir entre caracteres en minúsculas y MAYÚSCULAS, pero no haremos esto por ahora. Para que el programa sea más fácil de leer, es mejor escribir los operadores en letras minúsculas y comenzar los nombres de las subrutinas y las etiquetas en letras mayúsculas. Pero depende de quién se sienta cómodo.

Entonces, pasemos a nuestro primer programa:

(1) segmento CSEG

(2)org 100h

(4)Comenzar:

(6) mov ah,9

(7) mov dx, mensaje de compensación

(8) entre 21h

(10) entre 20h

(11)

(12) Mensaje db "¡Hola mundo! $"

(13)CSEG termina

(14) fin comenzar

Para explicar todos los operadores en este ejemplo, necesitaremos varias ediciones. Por lo tanto, simplemente omitiremos la descripción de algunos comandos en esta etapa. Simplemente asuma que así es como debería ser. Analizaremos estos operadores en detalle en un futuro muy próximo. Entonces, las líneas numeradas (1), (2) y (13) simplemente las ignoras.

Las líneas (3), (5), (9) y (11) se dejan en blanco. Esto se hace para mayor claridad. El ensamblador simplemente los omitirá.

Ahora pasemos a considerar los operadores restantes. El código del programa comienza con la línea (4). Esta es una marca que le indica al ensamblador el comienzo del código. La línea (14) contiene los operadores end Begin ( empezar ingles Comenzar; fin fin). Este es el final del programa. En general, en lugar de la palabra Comenzar se podría haber usado algo más. Por ejemplo, Comenzar:. En este caso tendríamos que finalizar el programa. Fin Inicio (14).

Las líneas (6) (8) muestran el mensaje ¡Hola, mundo!. Aquí tendremos que hablar brevemente sobre los registros del procesador (veremos este tema con más detalle en el próximo número).

Un registro de procesador es una memoria especialmente asignada para almacenar un número.

Por ejemplo:

Si queremos sumar dos números, entonces en matemáticas lo escribimos así:

A, B y C Se trata de una especie de registros (si hablamos de una computadora) en los que se pueden almacenar algunos datos. A=5 se puede leer como: Asigne a A el número 5. .

Para asignar un valor a un registro, existe un operador mov en Assembler (del inglés move load). La línea (6) debería leerse así: Cargando en el registro A.H.número 9 (en otras palabras, asignamos A.H.Número 9). A continuación veremos por qué esto es necesario.

En la línea (7) cargamos en el registro. DX dirección del mensaje para la salida (en este ejemplo será la cadena¡Hola mundo!$).

Las interrupciones se tratarán en detalle en números posteriores. Aquí diré algunas palabras.

Interrumpir MS-DOS es una especie de subrutina (parte MS-DOS), que reside permanentemente en la memoria y se puede llamar en cualquier momento desde cualquier programa.

Consideremos lo anterior usando un ejemplo (Notas en letra pequeña):

Programa para sumar dos números.

InicioProgramas

A=5 Introducimos el valor 5 en la variable A

B=8 en la variable B el valor 8

Llamar a la suma de subrutinas

ahora C es igual a 13

A=10 Lo mismo, solo números diferentes.

B=25

Llamar a la suma de subrutinas

ahora C es igual a 35

Fin del programa

Adición de subrutina

C=A+B

Regreso desde subrutina volvemos al lugar desde donde llamamos

Fin de subrutina

En este ejemplo, llamamos a la subrutina dos veces. Suma, que agregó dos números que se le pasaron en variables A y B . El resultado se coloca en la variable C. Cuando se llama a una subrutina, la computadora recuerda desde dónde fue llamada y luego, cuando la subrutina termina de ejecutarse, la computadora regresa al lugar desde donde fue llamada. Eso. Puedes llamar a subrutinas un número indefinido de veces desde cualquier lugar.

Al ejecutar la línea (8) de un programa Ensamblador, llamamos a una subrutina (en este caso llamada interrupción), que muestra la línea en la pantalla. Para ello, de hecho, colocamos los valores necesarios en los registros. Todo el trabajo necesario (generar una línea, mover el cursor) lo realiza la subrutina. Esta línea se puede leer así: llame a la vigésima primera interrupción ( int del ingles interrumpir interrumpir). Tenga en cuenta que después del número 21 hay una letra h . Este, como ya sabemos, es un número hexadecimal (33 en decimal). Por supuesto, nada nos impide sustituir la línea. entre 21h y 33. El programa funcionará correctamente. Es una práctica común en Assembler indicar el número de interrupción en hexadecimal.

En la línea (10), como habrás adivinado, llamamos a la interrupción 20 h . Para llamar a esta interrupción, no es necesario especificar ningún valor en los registros. Realiza sólo una tarea: salir del programa (salir a DOS). Como resultado de la ejecución de la interrupción 20h, el programa volverá al lugar desde donde se inició (cargado, llamado). Por ejemplo, en Norton Commander o Navegador DOS.

La línea (12) contiene el mensaje que se enviará. Primera palabra ( mensaje mensaje) título del mensaje. Puede ser cualquier cosa (por ejemplo, desorden o cuerda, etc.). ACERCA DE Preste atención a la línea (7), en la que cargamos en el registro. DX nuestra dirección de mensajes.

Podemos crear otra línea, a la que llamaremos Lío2. Luego, a partir de la línea (9), inserte los siguientes comandos:

(10) mov dx, desplazamiento Mess2

(13) Mensaje db "¡Hola mundo! $"

(14) Mess2 db "¡Soy YO! $"

y reensamblar nuestro programa. Espero que puedas adivinar lo que va a pasar.

Presta atención al último carácter de las líneas. Mensaje y Mess2 - $. Señala el final de la línea. Si lo eliminamos, entonces 21 h la interrupción continuará emitiéndose hasta que encuentre un carácter en algún lugar de la memoria $. En la pantalla veremos basura .

Si tiene un depurador, podrá ver cómo funcionará nuestro programa.

El propósito de este número no era entender en detalle con cada operador. Esto es imposible, porque aún no tienes suficientes conocimientos. Creo que después de 3 o 4 versiones comprenderá el principio y la estructura de un programa de Asamblea. Quizás el lenguaje ensamblador le haya parecido extremadamente complicado, pero créanme, esto es a primera vista.

El sistema numérico familiar para los humanos es el decimal. Se basa en diez dígitos del 0 al 9. El sistema hexadecimal se distingue por la presencia de las primeras seis letras del alfabeto latino para escribir números además de los números básicos. Es decir, al número 9 le sigue el símbolo “A”, que corresponde al número 10 para el sistema decimal. En consecuencia, F en hexadecimal es 16 en decimal. El uso de dieciséis caracteres en el sistema no es una elección aleatoria.

La unidad de información es un poco. Ocho bits forman un byte. Existe un concepto similar a una palabra de máquina: una unidad de datos que representa dos, es decir, dieciséis bits. Así, utilizando dieciséis símbolos diferentes, es posible describir cualquier información que será la partícula más pequeña durante el intercambio de datos. Puede realizar cualquier operación aritmética con ellos y, en consecuencia, el resultado también se obtendrá en el sistema hexadecimal.

Para distinguir que un número está escrito en hexadecimal, después se escribe la letra “h” o el subíndice “16”.

Solicitud

El uso más extendido del sistema numérico hexadecimal es en códigos de error de productos de software, por ejemplo, un sistema operativo. Los números contenidos en estos códigos están estandarizados. Al tener una tabla especial, siempre puede determinar qué significa exactamente este o aquel error.

En los lenguajes de bajo nivel, que son lo más parecidos posible al código de máquina, se utiliza el sistema hexadecimal para escribir programas. Muchos programadores también lo utilizan cuando trabajan con lenguajes de alto nivel, porque los números de este sistema, utilizando una tabla de correspondencia especial, se convierten fácilmente al sistema binario en el que se basa el funcionamiento de toda la tecnología digital. Cualquier información en una computadora, ya sea un archivo de música o un documento de texto, después de la traducción se representa mediante una secuencia de código binario fuente, y es más conveniente verla representada mediante símbolos hexadecimales.

Además, uno de los usos de los caracteres hexadecimales es la descripción de esquemas de color, es decir, los tres componentes R, G, B se describen de manera apropiada para un sistema determinado. Este método de grabación se llama color hexadecimal.

La capacidad de ver un programa en código hexadecimal le permite depurarlo, realizar cambios y los atacantes utilizan este enfoque para piratear programas.




Arriba