Vous êtes sur la page 1sur 15

Sistema octal

El sistema numrico en base 8 se llama octal y utiliza los dgitos 0 a 7. Para convertir un nmero en base decimal a base octal se divide por 8 sucesivamente hasta llegar a cociente 0, y los restos de las divisiones en orden inverso indican el nmero en octal. Para pasar de base 8 a base decimal, solo hay que multiplicar cada cifra por 8 elevado a la posicin de la cifra, y sumar el resultado. Es ms fcil pasar de binario a octal, porque solo hay que agrupar de 3 en 3 los dgitos binarios, as, el nmero 74 (en decimal) es 1001010 (en binario), lo agruparamos como 1 / 001 / 010, despus obtenemos el nmero en decimal de cada uno de los nmeros en binario obtenidos: 1=1, 001=1 y 010=2. De modo que el nmero decimal 74 en octal es 112. En informtica a veces se utiliza la numeracin octal en vez de la hexadecimal, y se suele indicar poniendo 0x delante del nmero octal. Tiene la ventaja de que no requiere utilizar otros smbolos diferentes de los dgitos. Sin embargo, para trabajar con bytes o conjuntos de ellos, asumiendo que un byte es una palabra de 8 bits, suele ser ms cmodo el sistema hexadecimal, por cuanto todo byte as definido es completamente representable por dos dgitos hexadecimales.

Sistema de numeracin octal


El sistema de numeracin octal es un sistema de numeracin en base 8, una base que es potencia exacta de 2 o de la numeracin binaria. Esta caracterstica hace que la conversin a binario o viceversa sea bastante simple. El sistema octal usa 8 dgitos (0, 1, 2, 3, 4, 5, 6, 7) y tienen el mismo valor que en el sistema de numeracin decimal. El teorema fundamental aplicado al sistema octal sera el siguiente:

Como el sistema de numeracin octal usa la notacin posicional entonces para el nmero 3452,32 tenemos que: 2*80 + 5*81 + 4*82 + 3*83 + 3*8-1 + 2*8-2 = 2 + 40 + 4*64 + 3*512 + 3*0,125 + 2*0,015625 = 2 + 40 + 256 + 1536 + 0,375 + 0,03125 = 1834 + 0,40625d Entonces, 3452,32q = 1834,40625d El sub ndice q indica nmero octal, se usa la letra q para evitar confusin entre la letra 'o' y el nmero 0. En informtica, a veces se utiliza la numeracin octal en vez de la hexadecimal. Tiene la ventaja de que no requiere utilizar otros smbolos diferentes de los dgitos. Es posible que la

numeracin octal se usara en el pasado en lugar de la decimal, por ejemplo, para contar los espacios interdigitales o los dedos distintos de los pulgares. Es utilizado como una forma abreviada de representar nmeros binarios que emplean caracteres de seis bits. Cada tres bits (medio carcter) es convertido en un nico dgito octal (del griego okt 'ocho') Esto es muy importante por eso.

Fracciones
La numeracin octal es tan buena como la binaria y la hexadecimal para operar con fracciones, puesto que el nico factor primo para sus bases es 2. Todas las fracciones que tengan un denominador distinto de una potencia de 2 tendrn un desarrollo octal peridico. Fraccin Octal 1/2 1/3 1/4 1/5 1/6 1/7 1/8 1/9 1/10 1/2 1/3 1/4 1/5 1/6 1/7 Resultado en octal 0,4 0,25252525 peridico 0,2 0,14631463 peridico 0,125252525 peridico 0,111111 peridico

1/10 0,1 1/11 0,07070707 peridico 1/12 0,063146314 peridico

Tabla de conversin entre decimal, binario, hexadecimal y octal Decimal Binario Hexadecimal octal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 0 1 2 3 4 5 6 7 8 9 A B C D 0 1 2 3 4 5 6 7 10 11 12 13 14 15

14 15 16 17 18 19 20 21 22 23 30 31 32 33

01110 01111 10000 10001 10010 10011 10100 10101 10110 10111 11110 11111

E F 10 11 12 13 14 15 16 17 1E 1F

16 17 20 21 22 23 24 25 26 27 36 37 40 41

100000 20 100001 21

Sistema hexadecimal

Tabla de multiplicar hexadecimal. El sistema numrico hexadecimal o sistema hexadecimal (a veces abreviado como Hex, no confundir con sistema sexagesimal) es un sistema de numeracin que emplea 16 smbolos. Su uso actual est muy vinculado a la informtica y ciencias de la computacin, pues los computadores suelen utilizar el byte u octeto como unidad bsica de memoria; y, debido a que un byte representa valores posibles, y esto puede representarse como

que, segn el teorema general de la numeracin posicional, equivale al nmero en base 16 , dos dgitos hexadecimales corresponden exactamente permiten representar la misma lnea de enteros a un byte. En principio, dado que el sistema usual de numeracin es de base decimal y, por ello, slo se dispone de diez dgitos, se adopt la convencin de usar las seis primeras letras del alfabeto latino para suplir los dgitos que nos faltan. El conjunto de smbolos sera, por tanto, el siguiente:

Se debe notar que A = 10, B = 11, C = 12, D = 13, E = 14 y F = 15. En ocasiones se emplean letras minsculas en lugar de maysculas. Como en cualquier sistema de numeracin posicional, el valor numrico de cada dgito es alterado dependiendo de su posicin en la cadena de dgitos, quedando multiplicado por una cierta potencia de la base del sistema, que en este caso es 16. Por ejemplo: 3E0A16 = 3163 + E162 + 0161 + A160 = 34096 + 14256 + 016 + 101 = 15882.

El sistema hexadecimal actual fue introducido en el mbito de la computacin por primera vez por IBM en 1963. Una representacin anterior, con 09 y uz, fue usada en 1956 por la computadora Bendix G-15. Tabla de conversin entre decimal, binario, octal y hexadecimal

0hex 1hex 2hex 3hex 4hex 5hex 6hex 7hex

= = = = = = = =

0dec 1dec 2dec 3dec 4dec 5dec 6dec 7dec

= = = = = = = =

0oct 1oct 2oct 3oct 4oct 5oct 6oct 7oct

0 0 0 0 0 0 0 0

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

8hex 9hex Ahex Bhex Chex Dhex Ehex Fhex

= = = = = = = =

8dec 9dec 10dec 11dec 12dec 13dec 14dec 15dec

= = = = = = = =

10oct 11oct 12oct 13oct 14oct 15oct 16oct 17oct

1 1 1 1 1 1 1 1

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

Fracciones Como el nico factor primo de 16 es 2, todas las fracciones que no tengan una potencia de 2 en el denominador, tendrn un desarrollo hexadecimal peridico. Fraccin Hexadecimal Resultado en hexadecimal 1/2 1/3 1/4 1/6 1/7 1/8 1/9 1/10 1/11 1/12 1/2 1/3 1/4 1/4 1/7 1/8 1/9 1/A 1/B 1/C 0,8 ??? 0,5 peridico 0,4 ??? 0,2 0,1C7 peridico 0,19 peridico 0,1745D peridico 0,15 peridico

1/13 1/14 1/15 1/16

1/D 1/E 1/F 1/10

0,13B peridico 0,1249 peridico 0,1 peridico 0,1

Existe un sistema para convertir nmeros fraccionarios a hexadecimal de una forma ms mecnica. Se trata de convertir la parte entera con el procedimiento habitual y convertir la parte decimal aplicando sucesivas multiplicaciones por 16 hasta convertir el resultado en un nmero entero. Por ejemplo: 0,06640625 en base decimal. Multiplicado por 16: 1,0625, el primer decimal ser 1. Volvemos a multiplicar por 16 la parte decimal del anterior resultado: 1. Por lo tanto el siguiente decimal ser un 1.Resultado: 0,11 en base hexadecimal. Como el ltimo resultado se trata de un entero, hemos acabado la conversin. Hay ocasiones en las que no llegamos nunca a obtener un nmero entero, en ese caso tendremos un desarrollo hexadecimal peridico. Operaciones en Sistema Hexadecimal En el sistema hexadecimal, al igual que en el sistema decimal, binario y octal, se pueden hacer diversas operaciones matemticas. Entre ellas se encuentra la resta entre dos nmeros en sistema hexadecimal, la que se puede hacer con el mtodo de complemento a 15 o tambin utilizando el complemento a 16. Adems de stas, debemos manejar adecuadamente la suma en sistema hexadecimal, explicada a continuacin:

Hexadecimal Decimal A B C D E F 10 11 12 13 14 15

Suma

9 + 7 = 16 (16 - 16 nos llevamos 1 y es = 10 )

En este caso la respuesta obtenida, 16, no est entre el 0 y el 15, por lo que tenemos que restarle 16. Por lo tanto, la respuesta obtenida ser 10 (sistema hexadecimal). Hay que tener cuidado de utilizar correctamente las letras, ya que operar a la vez con letras y nmeros puede crear confusiones.

A + 6 = 16 (16 - 16 = 0 y nos llevamos 1)

Ocurre lo mismo que en el ejemplo anterior.

A + A = 20 ( 20 16 = 4 y nos llevamos 1)

La respuesta es 20 y no est entre el 0 y el 15, por lo que tenemos que restarle 16. Por lo tanto, la respuesta obtenida ser 14 (sistema hexadecimal). Hay que tener cuidado de utilizar correctamente las letras, ya que operar a la vez con letras y nmeros puede crear confusiones.

F + E = 29 ( 29 16 =D y nos llevamos 1)

La respuesta es 29 y no est entre el 0 y el 15, por lo que tenemos que restarle 16. Por lo tanto, la respuesta obtenida ser 1D (sistema hexadecimal). Hay que tener cuidado de utilizar correctamente las letras, ya que operar a la vez con letras y nmeros puede crear confusiones.

Ahora haremos una operacin ms complicada: A + 2 = 12 (12 corresponde a C)

Ten en cuenta que puedes comprobar los resultados utilizando una calculadora cientfica. Resta hexadecimal Complemento C15 Podemos hacer la resta de dos nmeros hexadecimales utilizando el complemento a 15. Para ello tendremos que sumar al minuendo el complemento a quince del sustraendo, y finalmente sumarle el bit de overflow (bit que se desborda).

Para entender la resta en complemento a 15 lo analizaremos con un ejemplo. sta es la resta que tenemos que resolver: A4FC9 - DE8 ???? Primero tenemos que hacer que el minuendo y el sustraendo tengan la misma cantidad de nmeros. Para ello, aadiremos ceros al sustraendo hasta que sean suficientes. A4FC9 - 00DE8 ???? Despus, crearemos un nuevo nmero con la misma cantidad de nmeros que el nuevo sustraendo. Como en el sistema hexadecimal el mayor nmero que tenemos es el 15, que corresponde a la letra F, tendremos que escribir la F tantas veces como nmeros tiene el sustraendo. FFFFF - 00DE8 FF217 La resta se hace siguiendo las normas generales de la resta comn. La diferencia obtenida se denomina el complemento a 15. Recuerda el valor correspondiente a cada letra al operar. Ahora tendremos que sumar el minuendo y el complemento a 15 utilizando la suma en sistema hexadecimal, mencionada anteriormente. A4FC9 + FF217 1A41E0 Con la suma obtenemos el resultado 1A41E0, pero no es la respuesta final. Te habrs dado cuenta que este nuevo nmero tiene ms cifras que los nmeros iniciales que tenamos que restar. Tenemos que quitar el nmero de la izquierda (en este caso, el 1) y sumarlo. A41E0 + 1 A41E1 La respuesta es A41E1. Ten en cuenta que puedes comprobar los resultados utilizando una calculadora cientfica.

Complemento C16 Tambin podemos hacer la resta de dos nmeros hexadecimales utilizando el complemento a 16, siguiendo un proceso similar que en el caso del complemento a 15. Para resolver la resta, tendremos que sumar al minuendo el complemento a diecisis del sustraendo. Para entender la resta en complemento a 16 lo analizaremos con el ejemplo anterior. sta es la resta que tenemos que resolver: A4FC9 - DE8 ???? Primero tenemos que hacer que el minuendo y el sustraendo tengan la misma cantidad de nmeros, al igual que ocurre en el proceso del complemento a 15. Para ello, aadiremos ceros al sustraendo hasta que sean suficientes. A4FC9 - 00DE8 ???? Despus, crearemos un nuevo nmero con la misma cantidad de nmeros que el nuevo sustraendo. Como en el sistema hexadecimal el mayor nmero que tenemos es el 15, que corresponde a la letra F, tendremos que escribir la F tantas veces como nmeros tiene el sustraendo. FFFFF - 00DE8 FF217 La resta se hace siguiendo las normas generales de la resta comn. Ahora tenemos que sumarle 1 a la diferencia obtenida. Este paso es muy importante, ya que es la diferencia entre hacer la resta en complemento a 15 16, y se suele olvidar fcilmente. Adems, recuerda que ests sumando en sistema hexadecimal, siguiendo el mismo proceso explicado anteriormente. FF217 + 1 FF218

A la diferencia obtenida y sumarle uno le denominaremos el complemento a 16.

Ahora tendremos que sumar el minuendo y el complemento a 16 A4FC9 + FF218 1A41E1 Con la suma obtenemos el resultado 1A41E1. Te habrs dado cuenta que este nuevo nmero tiene ms cifras que los nmeros iniciales que tenamos que restas, cosa imposible en una resta (que la diferencia sea mayor que el minuendo y el sustraendo). Por eso, y estando en complemento a 16, tendremos que despreciar (eliminar) el nmero de la izquierda. En este caso es el 1. La respuesta, por lo tanto, es A41E1. En ambos casos la respuesta obtenida deber ser la misma, ya que hemos resuelto la misma resta en sistema hexadecimal. Por lo tanto, podremos comprobar que hemos operado bien comparando las respuestas obtenidas en complemento a 15 y en complemento a 16 para una misma resta. Adems, ten en cuenta que puedes comprobar los resultados utilizando una calculadora cientfica.

Operaciones con nmeros binarios Suma de nmeros binarios


La tabla de sumar para nmeros binarios es la siguiente: + 0 1 0 1 0 1 1 10

Las posibles combinaciones al sumar dos bits son:


0+0=0 0+1=1 1+0=1 1 + 1 = 10

Note que al sumar 1 + 1 es 102, es decir, llevamos 1 a la siguiente posicin de la izquierda (acarreo). Esto es equivalente, en el sistema decimal a sumar 9 + 1, que da 10: cero en la posicin que estamos sumando y un 1 de acarreo a la siguiente posicin. Ejemplo 1 10011000 + 00010101 10101101 Se puede convertir la operacin binaria en una operacin decimal, resolver la decimal, y despus transformar el resultado en un (nmero) binario. Operamos como en el sistema decimal: comenzamos a sumar desde la derecha, en nuestro ejemplo, 1 + 1 = 10, entonces escribimos 0 en la fila del resultado y llevamos 1 (este "1" se llama acarreo o arrastre). A continuacin se suma el acarreo a la siguiente columna: 1 + 0 + 0 = 1, y seguimos hasta terminar todas la columnas (exactamente como en decimal).

Resta de nmeros binarios


El algoritmo de la resta en sistema binario es el mismo que en el sistema decimal. Pero conviene repasar la operacin de restar en decimal para comprender la operacin binaria, que es ms sencilla. Los trminos que intervienen en la resta se llaman minuendo, sustraendo y diferencia. Las restas bsicas 0 - 0, 1 - 0 y 1 - 1 son evidentes:

0-0=0 1-0=1 1-1=0 0 - 1 = 1 (se transforma en 10 - 1 = 1) (en sistema decimal equivale a 2 - 1 = 1)

La resta 0 - 1 se resuelve igual que en el sistema decimal, tomando una unidad prestada de la posicin siguiente: 0 - 1 = 1 y me llevo 1, lo que equivale a decir en el sistema decimal, 2 - 1 = 1. Ejemplos 10001 -01010 00111 11011001 -10101011 00101110

En sistema decimal sera: 17 - 10 = 7 y 217 - 171 = 46. Para simplificar las restas y reducir la posibilidad de cometer errores hay varios mtodos:

Dividir los nmeros largos en grupos. En el siguiente ejemplo, vemos cmo se divide una resta larga en tres restas cortas:

100110011101 1001 1001 1101 -010101110010 -0101 -0111 -0010 = 010000101011 0100 0010 1011

Utilizando el complemento a dos (C2). La resta de dos nmeros binarios puede obtenerse sumando al minuendo el complemento a dos del sustraendo.

Ejemplo La siguiente resta, 91 - 46 = 45, en binario es: 1011011 1011011 -0101110 el C2 de 0101110 es 1010010 +1010010 0101101 10101101 En el resultado nos sobra un bit, que se desborda por la izquierda. Pero, como el nmero resultante no puede ser ms largo que el minuendo, el bit sobrante se desprecia. Un ltimo ejemplo: vamos a restar 219 - 23 = 196, directamente y utilizando el complemento a dos: 11011011 11011011 -00010111 el C2 de 00010111 es 11101001 +11101001 11000100 111000100 Y, despreciando el bit que se desborda por la izquierda, llegamos al resultado correcto: 11000100 en binario, 196 en decimal.

Lenguaje ensamblador
El lenguaje ensamblador, o assembler (assembly language en ingls) es un lenguaje de programacin de bajo nivel para los computadores, microprocesadores, microcontroladores, y otros circuitos integrados programables. Implementa una representacin simblica de los cdigos de mquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura legible por un programador. Esta representacin es usualmente definida por el fabricante de hardware, y est basada en los mnemnicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria, y otras caractersticas del lenguaje. Un lenguaje ensamblador es por lo tanto especfico a cierta arquitectura de computador fsica (o virtual). Esto est en contraste con la mayora de los lenguajes de programacin de alto nivel, que, idealmente son portables. Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al cdigo de mquina del computador objetivo. El ensamblador realiza una traduccin ms o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemnicas a las instrucciones y datos de mquina. Esto est en contraste con los lenguajes de alto nivel, en los cuales una sola declaracin generalmente da lugar a muchas instrucciones de mquina. Muchos sofisticados ensambladores ofrecen mecanismos adicionales para facilitar el desarrollo del programa, controlar el proceso de ensamblaje, y la ayuda de depuracin. Particularmente, la mayora de los ensambladores modernos incluyen una facilidad de macro (descrita ms abajo), y son llamados macro ensambladores. Fue usado principalmente en los inicios del desarrollo de software, cuando an no se contaba con potentes lenguajes de alto nivel y los recursos eran limitados. Actualmente se utiliza con frecuencia en ambientes acadmicos y de investigacin, especialmente cuando se requiere la manipulacin directa de hardware, altos rendimientos, o un uso de recursos controlado y reducido. Muchos dispositivos programables (como los microcontroladores) an cuentan con el ensamblador como la nica manera de ser manipulados.

Caractersticas

El cdigo escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su estructura se acerca al lenguaje mquina, es decir, es un lenguaje de bajo nivel. El lenguaje ensamblador es difcilmente portable, es decir, un cdigo escrito para un microprocesador, puede necesitar ser modificado, para poder ser usado en otra mquina distinta. Al cambiar a una mquina con arquitectura diferente, generalmente es necesario reescribirlo completamente. Los programas hechos por un programador experto en lenguaje ensamblador son generalmente mucho ms rpidos y consumen menos recursos del sistema (memoria RAM y ROM) que el programa equivalente compilado desde un lenguaje de alto nivel. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan ms rpidamente y ocupan menos espacio que con lenguajes de alto nivel. Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de cdigo difciles y/o muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el

lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no estn disponibles en los lenguajes de alto nivel. Tambin se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecucin.

Programa ensamblador
Tpicamente, un programa ensamblador (assembler en ingls) moderno crea cdigo objeto traduciendo instrucciones mnemnicas de lenguaje ensamblador en opcodes, y resolviendo los nombres simblicos para las localizaciones de memoria y otras entidades.1 El uso de referencias simblicas es una caracterstica clave del lenguaje ensamblador, evitando tediosos clculos y actualizaciones manuales de las direcciones despus de cada modificacin del programa. La mayora de los ensambladores tambin incluyen facilidades de macros para realizar sustitucin textual - ej. generar cortas secuencias de instrucciones como expansin en lnea en vez de llamar a subrutinas. Los ensambladores son generalmente ms simples de escribir que los compiladores para los lenguajes de alto nivel, y han estado disponibles desde los aos 1950. Los ensambladores modernos, especialmente para las arquitecturas basadas en RISC, tales como MIPS, Sun SPARC, y HP PA-RISC, as como tambin para el x86 (-64), optimizan la planificacin de instrucciones para explotar la segmentacin del CPU eficientemente. En los compiladores para lenguajes de alto nivel, son el ltimo paso antes de generar el cdigo ejecutable.

Nmero de pasos
Hay dos tipos de ensambladores basados en cuntos pasos a travs de la fuente son necesarios para producir el programa ejecutable.

Los ensambladores de un solo paso pasan a travs del cdigo fuente una vez y asumen que todos los smbolos sern definidos antes de cualquier instruccin que los refiera. Los ensambladores del dos pasos crean una tabla con todos los smbolos y sus valores en el primer paso, despus usan la tabla en un segundo paso para generar cdigo. El ensamblador debe por lo menos poder determinar la longitud de cada instruccin en el primer paso para que puedan ser calculadas las direcciones de los smbolos.

La ventaja de un ensamblador de un solo paso es la velocidad, que no es tan importante como lo fue en un momento dados los avances en velocidad y capacidades del computador. La ventaja del ensamblador de dos pasos es que los smbolos pueden ser definidos dondequiera en el cdigo fuente del programa. Esto permite a los programas ser definidos de maneras ms lgicas y ms significativas, haciendo los programas de ensamblador de dos paso ms fciles leer y mantener