026:iniciacion

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
026:iniciacion [d/m/Y H:i] miguel026:iniciacion [d/m/Y H:i] (actual) miguel
Línea 43: Línea 43:
 El peso de cada uno de los dígitos hexadecimales que forman el número, es la potencia de dieciséis igual al lugar que ocupen, comenzando a contar desde cero y de derecha a izquierda. Por ejemplo: El peso de cada uno de los dígitos hexadecimales que forman el número, es la potencia de dieciséis igual al lugar que ocupen, comenzando a contar desde cero y de derecha a izquierda. Por ejemplo:
  
-En el número 734H, los pesos de los dígitos son, comenzando por el de la derecha, 16<sup>0</sup> (= 1), 16(= 16) y 162 (= 256), respectivamente, es decir que: 734H = 7 x 162 + 3 x 16+ 4 x 16= 7 x 256 + 3 x 16 + 4 = 1844D+En el número 734H, los pesos de los dígitos son, comenzando por el de la derecha, 16<sup>0</sup> (=1), 16<sup>1</sup> (=16) y 16<sup>2</sup> (=256), respectivamente, es decir que: 734H = 7 x 162<sup>2</sup> + 3 x 16<sup>1</sup> + 4 x 16<sup>0</sup> = 7 x 256 + 3 x 16 + 4 = 1844D
  
 Obsérvese como conociendo los pesos, la conversión hexadecimal a decimal es inmediata. Obsérvese como conociendo los pesos, la conversión hexadecimal a decimal es inmediata.
Línea 49: Línea 49:
 Veamos otro ejemplo: Veamos otro ejemplo:
  
-¿Cúal será el equivalente decimal del hexadecimal FE2AH ?+¿Cual será el equivalente decimal del hexadecimal FE2AH ?
  
-Si procedemos como en el ejemplo anterior, tendremos: FE2AH = F x 16+ E x 162 + 2xl6+ A x 16°= 15x4096+ 14x256 + 2 x 16 + 10 = 65066D en base diez.+Si procedemos como en el ejemplo anterior, tendremos: FE2AH = F x 16<sup>3</sup> + E x 16<sup>2</sup> + 2xl6<sup>1</sup> + A x 16<sup>0</sup> = 15x4096+ 14x256 + 2x16 + 10 = 65066D en base diez.
  
 Recuerde que el equivalente decimal del dígito hexadecimal F es 15D, el de E es 14D y el de A es 10D. Recuerde que el equivalente decimal del dígito hexadecimal F es 15D, el de E es 14D y el de A es 10D.
Línea 57: Línea 57:
 Es útil aprender de memoria las cuatro primeras potencias de dieciséis, que se corresponden con los pesos de los cuatro primeros dígitos (comenzando por la derecha) de cualquier número hexadecimal: Es útil aprender de memoria las cuatro primeras potencias de dieciséis, que se corresponden con los pesos de los cuatro primeros dígitos (comenzando por la derecha) de cualquier número hexadecimal:
  
-16"= 1; 16= 16; 162 = 256; 16'= 4096+16<sup>0</sup> = 1; 16<sup>1</sup> = 16; 16<sup>2</sup> = 256; 16<sup>3</sup> = 4096
  
-La operación inversa, es decir, dado un número en base diez calcular su equivalente en base dieciséis, se resuelve mediante un algoritmo, similar al visto en el anterior artículo para la conversión de base diez a base dos, denominado de divisiones sucesivas. El método consiste en dividir el número entre dieciséis y el cociente de esta división dividirlo, nuevamente, entre dieciséis, y así sucesivamente hasta que el cociente resultante sea inferiora dieciséis. Veamos un ejemplo:+La operación inversa, es decir, dado un número en base diez calcular su equivalente en base dieciséis, se resuelve mediante un algoritmo, similar al visto en el anterior artículo para la conversión de base diez a base dos, denominado de divisiones sucesivas. El método consiste en dividir el número entre dieciséis y el cociente de esta división dividirlo, nuevamente, entre dieciséis, y así sucesivamente hasta que el cociente resultante sea inferior a dieciséis. Veamos un ejemplo:
  
-Calcular el equivalente hexadecimal del decimal 613451).+Calcular el equivalente hexadecimal del decimal 613451D.
  
-61345 16 +{{ :026:iniciacion_02.jpg?200 |}}
- +
-133 3834 |16 +
- +
-054 063 239 16 +
- +
-065 154 079 14 +
- +
-1 10 15+
  
 Hemos puesto en negrita los restos de las distintas divisiones y el último cociente. El equivalente hexadecimal se construye tomando estos números empezando por el último cociente y escribiéndolos de izquierda a derecha. Hemos puesto en negrita los restos de las distintas divisiones y el último cociente. El equivalente hexadecimal se construye tomando estos números empezando por el último cociente y escribiéndolos de izquierda a derecha.
Línea 77: Línea 69:
 Entonces: Entonces:
  
-613451) = EFA1H Recuerde nuevamente que el equivalente hexadecimal de 141) es EH, el de 151) es FH y el de 10L) es AH.+613451D = EFA1H 
 + 
 +Recuerde nuevamente que el equivalente hexadecimal de 14D es EH, el de 15 es FH y el de 10D es AH.
  
 Igual que en base diez, añadir ceros a la izquierda de un número entero hexadecimal no altera el valor. El mismo número representan 34AH y 0034AH. Igual que en base diez, añadir ceros a la izquierda de un número entero hexadecimal no altera el valor. El mismo número representan 34AH y 0034AH.
Línea 83: Línea 77:
 El siguiente programa convierte un número decimal a hexadecimal. El siguiente programa convierte un número decimal a hexadecimal.
  
-10 rem programa DE conversion de decimal r hexrdecimal+<code basic>
  
-20 let b $ = " "+10 REM PROGRAMA DE CONVERSION DE DECIMAL A HEXADECIMAL 
 +20 LET B$="" 
 +30 INPUT "NUMERO?=";
 +40 IF A=0 THEN PRINT B$: GO TO 20 
 +50 LET C=INT (A/16): LET R=A-16*C 
 +60 LET C$=STR$ (R) 
 +70 IF R>10 THEN LET C$=CHR$ (55+R) 
 +80 LET B$=C$+B$ 
 +90 LET A=C 
 +100 GO TO 40
  
-30 input "nunero?=";+</code>
- +
-4-0 if fl =0 then print b* go to 20 +
- +
-50 let c=int (fl/16): let r=fl-1 6*c +
- +
-60 let c*=str$ (r) +
- +
-70 if r 10 then let c»=chr$ (5 5 + r) +
- +
-80 let b$=c$+bí +
- +
-90 let r=c +
- +
-100 go to 40+
  
 Para la conversión de hexadecimal a decimal pruebe el siguiente programa: Para la conversión de hexadecimal a decimal pruebe el siguiente programa:
  
-10 REM PROGRAMA DE CONVERSION DE CUALQUIER BASE ENTRE 2 Y 16 A BASE 10 +<code basic>
- +
-20 INPUT " base ? = " i B: IF B 2 OR B >16 THEN GO TO 140 30 INPUT "numero?=",A$ LET C= +
- +
-+
- +
-40 FOR 1=0 TO LEN (A$)-1 50 LET A=CODE (A»(LEN <A$)-I)) 60 IF (A < 48 OR A > 57) HNO (A<55 OR A > 70 J THEN GO TO 140+
  
-70 IF A>=48 AND A<=57 THEN LET A=A-48: GO TO 90 30 LET A = A-55 90 LET C = A* IBtI) +í 100 IF A > =B THEN GO TO 140 110 NEXT I 120 PRINT C 130 GO TO 20+10 REM PROGRAMA DE CONVERSION DE CUALQUIER BASE ENTRE 2 Y 16 A BASE 10 
 +20 INPUT "BASE?=";B: IF B<2 OR B>16 THEN GO TO 140 
 +30 INPUT "NUMERO?="; A$: LET C=0 
 +40 FOR I=0 TO LEN (A$)-1 
 +50 LET A=CODE (A$(LEN (A$)-I)) 
 +60 IF (A<48 OR A>57) AND (A<65 OR A>70) THEN GO TO 140 
 +70 IF A>=48 AND A<=57 THEN LET A=A-48: GO TO 90 
 +80 LET A=A-55 
 +90 LET C=A*(B^I)+
 +100 IF A>=BTHEN GO TO 140 
 +110 NEXT I 
 +120 PRINT C 
 +130 GO TO 20 
 +140 PRINT "ERROR": GO TO 20
  
-140 PRINT "ERROR": GO TO 20+</code>
  
-En los dos programas anteriores, el número tecleado debe ser positivo+En los dos programas anteriores, el número tecleado debe ser positivo.
  
-Hasta aquí, hemos visto la conversión binaria**decimal y hexadecimal^» decimal. Veamos ahora la conversión directa binariohexadecimal.+Hasta aquí, hemos visto la conversión binaria <=> decimal y hexadecimal <=> decimal. Veamos ahora la conversión directa binario <=> hexadecimal.
  
 La utilidad de la base dieciséis está precisamente en que la conversión binario — hexadecimal es sencilla, directa y rápida. Además, en base dieciséis se pueden representar con pocas cifras números que en base dos necesitarían una larga tira de «unos» y «ceros». Resulta muy cómodo referirse al valor de un byte (8 bits) o de una palabra (2 bytes = 16 bit) expresándolo en base dieciséis mejor que en binario o en decimal. Con algo de practica, es muy fácil —en seguida se llega a hacer mentalmente— conocer el valor de cada bit dentro del byte (o palabra). La utilidad de la base dieciséis está precisamente en que la conversión binario — hexadecimal es sencilla, directa y rápida. Además, en base dieciséis se pueden representar con pocas cifras números que en base dos necesitarían una larga tira de «unos» y «ceros». Resulta muy cómodo referirse al valor de un byte (8 bits) o de una palabra (2 bytes = 16 bit) expresándolo en base dieciséis mejor que en binario o en decimal. Con algo de practica, es muy fácil —en seguida se llega a hacer mentalmente— conocer el valor de cada bit dentro del byte (o palabra).
  
-Para la conversión directa de binario a hexadecimal separamos el número binario en grupos de cuatro bits, co-+Para la conversión directa de binario a hexadecimal separamos el número binario en grupos de cuatro bits, comenzando por la derecha. Si alguno faltara en el último grupo (el de la izquierda) se añaden ceros, lo que no altera el número. A continuación, convertimos cada grupo de cuatro bits a su dígito hexadecimal correspondiente (ver tabla 1), y los escribimos en el mismo orden. Por ejemplo, el número 10110011111B es en hexadecimal:
  
-menzando por la derechaSi alguno faltara en el último grupo (el de la izquierda) se añaden ceros, lo que no altera el número. A continuación, convertimos cada grupo de cuatro bits a su dígito hexadecimal correspondiente (ver tabla I), y los escribimos en el mismo orden. Por ejemplo, el número 10110011111B es en hexadecimal:+{{ :026:iniciacion_03.jpg?200 |}}
  
-01011001111 IB = 59FH \___/+Y el número 101110100011B es en hexadecimal:
  
-II II II 5 9 F Y el número 101110100011B es en hexadecimal:+{{ :026:iniciacion_04.jpg?200 |}}
  
-J 01 U 010P01 \ B = BA3H II II II B A 3 Obsévese que un byte se puede representar con dos dígitos hexadecima-les puesto que:+Obsérvese que un byte se puede representar con dos dígitos hexadecimales puesto que:
  
-00000000B = 00H 1111111 IB = FFH = 2551) La conversión de hexadecimal a binario directa consiste en hacer justo lo contrario. Es decir, cada cifra hexadecimal se convierte a su equivalente binario (Tabla 1), escribiendo cada uno de los dígitos hexadecimales con cuatro bits y en el mismo orden. Por ejemplo, el hexadecimal, A31FH en binario sería:+00000000B = 00H 
 +11111111B = FFH = 255D
  
-A31F11 = 101000111)001,111 IB+La conversión de hexadecimal a binario directa consiste en hacer justo lo contrario. Es decir, cada cifra hexadecimal se convierte a su equivalente binario (Tabla 1), escribiendo cada uno de los dígitos hexadecimales con cuatro bits y en el mismo orden. Por ejemplo, el hexadecimal, A31FH en binario sería:
  
-II II II II A 3 1 F+{{ :026:iniciacion_05.jpg?200 |}}
  
 y el y el
  
-3 E911=001111101001 B= 1111101001B II li II+{{ :026:iniciacion_06.jpg?200 |}}
  
-3 E 9+El hexadecimal:
  
-F.I hexadecimal:+FFFFH = 1111111111111111B = 65535D
  
-FFFFI1 = 111111111111111 IB = = 65535D se corresponde con la dirección más alta de la memoria del Spectrum de 64 Kbyte (1 Kbyte = 210 = 1024 bytes).+se corresponde con la dirección más alta de la memoria del Spectrum de 64 Kbyte (1 Kbyte = 2<sup>10</sup> = 1024 bytes).
  • 026/iniciacion.1441893316.txt.gz
  • Última modificación: d/m/Y H:i
  • por miguel