Quiero aprender bien el hexadecimal. ¿Alguien quisiera contarme un poco sobre esto? Quiero aprender el camino que se debe tomar para programar. El lenguaje está familiarizado con el sistema base. Porque me enseñé solo.
Hexadecimal (nombre en inglés: sistema numérico hexadecimal) es un método de representación de datos en ordenadores. Es diferente de la representación en nuestra vida diaria. Consta de 0 a 9, A-F y las letras no distinguen entre mayúsculas y minúsculas. La relación correspondiente con la base 10 es: 0-9 corresponde a 0-9; A-F corresponde a 10-15; los números de base N se pueden representar mediante números del 0 al (N-1), y las letras A-F se utilizan para los números superiores. 9.
El 20 hexadecimal expresado en decimal es: 2×16?+0×16?=32
El 32 decimal expresado en hexadecimal es: 20
El El método para convertir un número decimal en un número hexadecimal es: dividir la parte entera del número decimal por 16 y tomar el resto, y convertir la parte decimal multiplicando por 16 y tomar el resto.
Por ejemplo, 0,1 en decimal se convierte a 0,0631463146314631 en octal. Es decir, 0,1 por 8 = 0,8, si hay menos de 1, no redondear al número entero, 0,8 por 8 = 6,4, toma el número entero de 6, 0,4 por 8 = 3,2, toma el número entero de 3, y calcula en secuencia.
En programación, a menudo usamos decimal. Después de todo, C/C++ es un lenguaje de alto nivel.
Por ejemplo:
int a = 100,b = 99;
Sin embargo, dado que los datos se representan en la computadora, finalmente existen en forma binaria. , Entonces, a veces, el uso de binarios puede resolver el problema de forma más intuitiva. Pero el número binario es demasiado largo. Por ejemplo, el tipo int ocupa 4 bytes y tiene 32 bits. Por ejemplo, 100, expresado como un número binario de tipo int será:
0000
0000
0000
0000 p>
0110
0100
A nadie le gusta pensar u operar con números tan largos. Por lo tanto, C y C++
no proporcionan un método para escribir números binarios directamente en el código. Este problema se puede resolver utilizando hexadecimal u octal. Porque cuanto mayor es la base, más corta es la longitud de expresión del número. Sin embargo, ¿por qué es el sistema hexadecimal u octal y no otros como el sistema 9 o 20? 2, 8 y 16 son las potencias 1, 3 y 4 de 2 respectivamente. Esto hace que sea muy sencillo realizar la conversión entre los tres sistemas básicos. Octal o hexadecimal acorta el número binario pero mantiene las características de expresión del número binario. Puedes descubrir esto en la siguiente lección sobre conversión de bases.
Convertir hexadecimal a decimal
Hexadecimal significa sumar 1 cada 16, pero solo tenemos diez números del 0 al 9, por eso usamos A, B, C, D Las seis letras E y F representan 10, 11, 12, 13, 14 y 15 respectivamente. Las letras no distinguen entre mayúsculas y minúsculas.
El peso del dígito 0 del número hexadecimal es 16 elevado a la potencia 0, el peso del primer dígito es 16 elevado a la potencia 1 y el peso del segundo dígito es 16 elevado a 2 Cuadrado...
Entonces, en la posición N (N comienza desde 0), si es un número β (β es mayor o igual a 0 y β es menor o igual a 15, es decir: F), el tamaño representado es β× 16 elevado a la enésima potencia.
Supongamos que existe un número hexadecimal 2AF5
El cálculo directo es:
5×16F×161+A×162+2×163=10997 [1]
También se puede expresar en forma vertical:
Dígito 0: 5×160=5
Dígito 1: F×16^1= 240
El 2do lugar: A×162=2560
El 3er lugar: 2×163=8192
---------- ---------------------
10997
Se puede ver aquí que todas las bases se convierten a decimal, el La clave está en sus diferentes pesos.
Supongamos que alguien te pregunta, ¿por qué el número decimal 1234 es mil doscientos treinta y cuatro? Puedes darle esta fórmula:
1234 = 1×103+2×102+3×101+4×100
Conversión hexadecimal
Primero, mira un número binario: 1111. ¿Qué es?
También puedes calcular así: 1×21×21+1×22+1×23=1×1+1×2+1×4+1×8=15.
Sin embargo, como 1111 solo tiene 4 dígitos, debemos recordar directamente el peso de cada dígito, y recordarlo de mayor a menor: 8, 4, 2, 1. Es decir, el peso del bit más alto es 23=8, seguido de 22=4, 21=2 y 20=1.
Recuerda 8421, para cualquier número binario de 4 cifras, podemos calcular rápidamente su valor decimal correspondiente.
A continuación se enumeran todos los valores posibles del número binario de cuatro dígitos /p>
1111 = 8 + 4 + 2 + 1 = 15 =F
1110 = 8 + 4 + 2 + 0 = 14= E
1101 = 8 + 4 + 0 + 1 = 13= D
1100 = 8 + 4 + 0 + 0 = 12 = C
1011 = 8 + 0 + 2 + 1 = 11= B
1010 = 8 + 0 + 2 + 0 = 10 =A
1001 = 8 + 0 + 0 + 1 =9 =9
…… p>
0001 = 0 + 0 + 0 + 1 = 1= 1
0000 = 0 + 0 + 0 + 0 = 0= 0
El número binario que se va a convertir a Hexadecimal se convierte a hexadecimal en segmentos de 4 dígitos.
Por ejemplo (la línea superior es un número binario, el siguiente es el número hexadecimal correspondiente):
1111 1101, 1010 0101, 1001 1011
F D , A 5, 9 B
Por el contrario, cuando vemos FD, ¿cómo podemos convertirlo rápidamente en un número binario?
Convierta F primero:
Cuando vemos F, necesitamos saber que es 15 (tal vez no esté familiarizado con los cinco números A ~ F), y luego cómo hacer 15 usando 8421? Debería ser 8 + 4 + 2 + 1, por lo que los cuatro dígitos son 1:1111.
Luego convierte D
Cuando veas D, sabrás que es 13. ¿Cómo se usa 8421 para formar 13? Debería ser: 8 + 4 + 1, que es: 1101.
Entonces, FD se convierte en un número binario, que es: 1111 1101
Dado que la conversión de hexadecimal a binario es bastante sencilla, necesitamos convertir un número decimal a binario. contando, también puedes convertirlo primero a hexadecimal y luego convertirlo a binario.
Por ejemplo, si el número decimal 1234 se convierte en un número binario, si desea seguir dividiendo entre 2 para obtener directamente el número binario, deberá calcular más veces.
Así que primero podemos dividir por 16 para obtener el número hexadecimal:
resto del cociente del proceso de cálculo del divisor
1234 1234/16 77 2
77 77/16 4 13 (D)
4 4/16 0 4
El resultado en hexadecimal es: 4D2
Entonces podemos escribir directamente la forma binaria de 4D2:
0100
1101
0010
La relación de mapeo es:
0100 -- 4 p>
1101 -- D
0010 -- 2
Del mismo modo, si un número binario es muy largo y necesitamos convertirlo a un número decimal, además de lo anterior El método que hemos aprendido es que también podemos convertir este binario a hexadecimal primero y luego convertirlo a decimal.
El siguiente es un ejemplo de un número binario de tipo int:
01101101
11100101
10101111
00011011
p>Convertimos a hexadecimal en grupos de cuatro dígitos: 6D E5 AF 1B
Decimal a hexadecimal
Utiliza el teorema del resto para descomponer, por Por ejemplo, convierta 487710 a hexadecimal:
487710÷16=30481....14(E)
30481÷16=1905....1
1905÷16=119....1
119÷16=7....7
7÷16=0....7
De esta forma, 487710 (10) = 7711E (16)