Capítulo 2: SISTEMAS NUMÉRICOS DE CODIFICACIÓN

Matematicas Discretas
14 min readNov 14, 2017

2.1 Introducción

Los sistemas numéricos de codificación son técnicas utilizadas para representar textos, flujos de datos o archivos mediante números enteros, utilizando los conceptos de la teoría de números. En la actualidad, tanto la teoría de números como los sistemas numéricos de codificación tienen gran auge en el mundo de la criptografía y en la seguridad computacional.

En este capítulo estudiaremos el sistema decimal, el binario, el octal y hexadecimal, y las conversiones de un sistema a otro.

2.2 Sistema numérico decimal

El número base de este sistema es 10; los dígitos utilizados son: 0, 1, 2, 3, 4, 6, 7, 8, 9. Es el sistema utilizado por los seres humanos para la realización de operaciones aritméticas.
Cualquier cadena numérica escrita con estos dígitos se denomina número decimal los cuales pueden tener o no punto flotante. Con ellas se realizan las operaciones aritméticas conocidas (suma, resta, multiplicación y división, potencia y radicación) que no serán realizadas en este texto, ya que generalmente se utilizan desde los inicios académicos. Un número decimal, en particular como los siguientes puede expresarse como sigue:

En general: sean ci las cifras de la parte entera y di las cifras de parte fraccionaria, se tiene:

2.3 Sistema numérico binario

La base de este sistema es el número 2; los únicos dígitos utilizados son: 0,1. Para diferenciar estos números se escribe la base como subíndice; por ejemplo 11011102.
Cada cifra binaria se denomina bit. Cualquier cadena de bits se denomina número binario, los cuales pueden tener o no punto flotante. Con ellas se realizan las operaciones aritméticas conocidas (suma, resta, multiplicación y división, potencia y radicación) que serán realizadas en este texto.
Cualquier número decimal se puede expresar como sigue:

En general: sean ri las cifras de la parte entera y di las cifras de parte fraccionaria, se tiene

La realización de las operaciones indicadas da como resultado un número decimal; esta es la conversión de un número binario dado decimal.

Ejemplo 2.1

convierta a decimal el numero binario 111001.10112 usando la tabla 2.1

Otra forma de hacer esta conversión se da con el siguiente procedimiento:

Ejemplo 2.2: convierta a binario el número 50, 2909 y 9102

. El resultado obtenido corresponderá a toda la cadena de estos bits
50=1100102

2909=1011010111012

9102=100011100011102

2.4 Sistema numérico octal

La base de este sistema es el 8; los únicos dígitos utilizados son: 0,1, 2, 3, 4, 6, 7. Para diferenciar estos números se escribe la base como subíndice; por ejemplo 728 (8 sub índice).
Cualquier cadena numérica escrita con estos dígitos se denomina número octal los cuales pueden tener o no punto flotante. Con ellas se realizan las operaciones aritméticas conocidas (suma, resta, multiplicación y división) que serán realizadas en este texto.
Cualquier número octal queda expresado en decimal como sigue:

En general: sean ci las cifras de la parte entera y di las cifras de parte fraccionaria, se tiene:

2.5 Sistema numérico hexadecimal

La base de este sistema es 16; los únicos dígitos utilizados son: 0,1, 2, 3, 4, 6, 7, 8, 9, A, B, C, D, E, F, donde A es 10, B es 11, C es 12, D es 13, E es 14 y F es 15. Para diferenciar estos números se escribe la base como subíndice 16 o H; por ejemplo, F216 o F2H.
El sistema hexadecimal tiene su aplicación en la determinación de direcciones de localidades de memoria en una microcomputadora y en la programación de computadoras en lenguaje de máquina. Las direcciones corresponden a números secuenciales e identifican cada circuito de la memoria. Algunos problemas de estas áreas se resuelven sumando o restando números hexadecimales.
Cualquier cadena numérica escrita con estas cifras se denomina número hexadecimal y puede tener o no punto flotante. Con ellas se realizan las operaciones aritméticas conocidas (suma, resta, multiplicación y división, potencia y radicación) que serán tratadas en este texto.

Cualquier número hexadecimal queda expresado en decimal, así:

En general: sean ci las cifras de la parte entera y di las cifras de parte fraccionaria, se tiene:

2.6 Aritmética binaria

Las operaciones aritméticas de una computadora o una calculadora se procesan en la ALU (Arithmetic Logic Unit) del microprocesador. Allí se combinan compuertas lógicas y otros dispositivos de manera que puedan realizar las operaciones aritméticas a grandes velocidades (en menos de un microsegundo). Las operaciones binarias aritméticas fundamentales son similares las realizadas con números decimales, pero teniendo en cuenta que el acarreo en la suma o lo que presta en la resta corresponde a la base del número

2.6.1 Suma binaria

La adición binaria utiliza el mismo algoritmo que utilizan los números decimales; pero debe tener en cuenta la anotación hecha en la sección acerca del acarreo. (ver tabla 2.4)

Ejemplo 2.3: Efectúe

2.6.2 Sustracción binaria

La adición binaria se realiza de igual manera que con los números decimales; pero debe tener en cuenta la anotación hecha en la sección acerca del préstamo binario. Para restar números binarios se pueden tener dos casos:

Caso 1: Resta sin signo. En este caso utilice la tabla 2.5

Ejemplo 2.10: efectúe las siguientes operaciones

Solución:

Caso 2: Sustracción con signo. En este caso puede convertir la resta a suma, así: a-b=a+(-b)

Luego aplique el concepto del máximo número de bits que deben tener los números, que generalmente se logra haciendo la suma y calculando el intervalo de valores.

Complementos binarios. Se conocen dos tipos de complemento binario: complemento a 1 y complemento a 2 y que son de gran utilidad para la realización de operaciones binarias con signo.
En los sistemas digitales se usan frecuentemente los Flip-Flops que son elementos de memoria de 1 bit (binary digit) conformados por componentes lógicos combinatorios conectados en una configuración con retroalimentación. Los Flip-Flops son circuitos electrónicos que alternan entre dos estados; pueden mantener un estado de salida después de desaparecer la condición de entrada que produjo ese estado. Los sistemas digitales, en particular las computadoras, almacenan los números binarios en Flip-Flops para almacenar el signo de estos números; en efecto, se introduce a la izquierda del binario un bit adicional, así:

.almacenará 0, si el número es positivo,.

.almacenará 1, si el número es negativo,.

Complemento a 1. Permite cambiar los bits o cifras binarias, así: 0 por 1 y 1 por 0.
Ejemplo 2.4: el complemento a 1 de 10111001012 es 01000110102
Complemento a 2. Consiste en sumar 1 a la cifra más significativa del número binario obtenido en complemento a 1

Ejemplo 2.5: el complemento a 2 de 10111001012 es

El complemento a 2 es la técnica más utilizada para representar números binarios con signo, permitiendo convertir la sustracción en una adición. Lo anterior, hace que el sistema digital utilice solamente un circuito para realizar ambas operaciones.

Ejemplo 2.6: exprese con 6 bits más el signo a los siguientes números

a) +25

b) –25

Solución:

Nota: el intervalo de valores que debe tener el número binario del resultado de una operación con signo va desde –2n hasta +(2n -1) con n= número de bits. Es de tal manera que quienes crean los compiladores tienen que tener en cuenta tal intervalo.

Ejemplo 2.7: ¿cuál es la cantidad de bits que tienen los números enteros de un lenguaje de programación, dado que su intervalo es –32768 hasta 32767?

Por lo tanto, en algunos lenguajes de programación los números enteros con signo se escriben con máximo 16 bits.

Ejemplo 2.8: exprese con signo +49, -49, +25 y -25

Solución:

El máximo número entero que se puede formar con estos números es 74 que se encuentra entre 64=26 y 128=67. Luego, se necesitan 7 bits para expresar a dichos enteros.

Si se quiere obtener –49, en efecto se tendría que hallar complemento a 2 al resultado (1):

Similarmente, para hallar el binario de –25 se toma el resultado (3). Por consiguiente quedaría:

  • 25=111001112 (4)

2.6.3 Multiplicación binaria

Para multiplicar binarios se realiza el mismo procedimiento que con números enteros. Para tal fin, a continuación se presenta la tabla 2.6 de la multiplicación que servirá de base para efectuar dicha operación.

Ejemplo 2.11

efectúe a)101112x1012 b)11.0012x10102

2.6.4 División binaria

Para dividir binarios se realiza el mismo procedimiento que con números enteros. Para tal fin, realice la división utilizando el método de resta, en la que a la parte del dividendo se sustrae el producto de las veces que cabe divisor en la parte del residuo por el divisor.

Ejemplo 2.12: efectúe a)11100112 ÷ 1012 b) 10011.012 ÷ 10102

Solución:

La parte que va en paréntesis (1001)2 indica que se repite; es decir, corresponde a un decimal periódico.

2.7 Conversión de números de un sistema a otro
2.7.1 Conversión de número decimal a binario

Para convertir un número decimal sin fracción decimal a binario se pueden utilizar 2 técnicas:

Técnica 1: divisiones sucesivas por 2
En efecto, se divide el número sucesivamente por 2 hasta que el cociente sea cero y a partir del último residuo hasta último se van escribiendo estos residuos y este será el número binario.
Si el número tiene fracción decimal tome la parte entera y proceda como en el caso anterior; luego escriba el punto que separa la parte entera de la fracción binaria. Ahora
proceda con la parte fraccionaria, así: multiplique este parte sucesivamente por 2 y vaya escribiendo la cifra obtenida en la parte entera, dejando siempre en cero a dicha parte, antes de volver a multiplicar. Continúe este proceso hasta que la parte fraccionaria sea cero. El resultado definitivo se obtiene escribiendo el resultado obtenido de la parte entera y a continuación los resultados de la parte fraccionaria (las partes enteras de los productos).

Ejemplo 2.13: convierta a binario los números a) 47 b) 47.375.

Solución:

Técnica 2: tabla de potencias de 2
Ejemplo 2.14: escriba el número binario correspondiente al decimal 2461. Escriba 1 en la potencia de 2 que puede utilizar para construir el número (ver tabla 2.7).

2.7.2 Conversión de número decimal a octal

Para convertir un número decimal sin fracción decimal a octal, se divide el número sucesivamente por 8 hasta que el cociente sea cero y a partir del último residuo se van escribiendo estos residuos; la cadena resultante será el número octal.
Si el número tiene fracción decimal tome la parte entera y proceda como en el caso anterior; luego escriba el punto que separa la parte entera de la fracción octal. Ahora proceda con la parte fraccionaria, así: multiplique este parte sucesivamente por 8 y vaya escribiendo la cifra obtenida en la parte entera, dejando siempre en cero a dicha parte, antes de volver a multiplicar. Continúe este proceso hasta que la parte fraccionaria sea cero. El resultado definitivo se obtiene escribiendo el resultado obtenido de la parte entera y a continuación los resultados de la parte fraccionaria (las partes enteras de los productos).
Ejemplo 2.13: 348 a octal

2.7.3 Conversión de número octal a binario

Para convertir un número octal a binario se toma cada cifra octal se convierte a binario, aplicando la técnica dada en la sección 8.8.2 y luego se escriba la cadena de binarios.

2.7.4 Conversión de número binario a octal

Para convertir un número binario a octal se reparten las cifras binarias en grupos de tres cifras binarias, así: parte entera se toma de derecha a izquierda; en caso que no se hayan suficientes cifras para formar esos grupos, se completa con ceros a la izquierda el último grupo; la parte fraccionaria se toma de izquierda a derecha; en caso tal que no tenga suficientes cifras para dichos grupos, se completa el último grupo con ceros a la derecha.

2.7.5 Conversión de número decimal a hexadecimal

Para convertir un número decimal sin fracción decimal a hexadecimal, se divide el número sucesivamente por 16 hasta que el cociente sea cero y a partir del último residuo hasta último se van escribiendo estos residuos y este será el número hexadecimal.
Si el número tiene fracción decimal tome la parte entera y proceda como en el caso anterior; luego escriba el punto que separa la parte entera de la fracción hexadecimal. Ahora proceda con la parte fraccionaria, así: multiplique este parte sucesivamente por 16 y vaya escribiendo la cifra obtenida en la parte entera, dejando siempre en cero a dicha parte, antes de volver a multiplicar. Continúe este proceso hasta que la parte fraccionaria sea cero. El resultado definitivo se obtiene escribiendo el resultado obtenido de la parte entera y a continuación los resultados de la parte fraccionaria (las partes enteras de los productos).

2.7.6 Conversión de número hexadecimal a binario

Para convertir un número hexadecimal a binario se toma cada cifra hexadecimal y se convierte a binario, aplicando la técnica ofrecida en la sección 8.8.2 y luego se escriba la cadena de binarios.

2.7.7 Conversión de número binario a hexadecimal

Para convertir un número binario a hexadecimal se agrupan de a cuatro cifras binarias de derecha a izquierda en parte entera binaria y de izquierda a derecha, si tiene parte fraccionaria. Si no se tienen suficientes cifras para formar esos grupos se completa con ceros, a la izquierda en su parte entera y a la derecha en su parte fraccionaria.

2.8 Aritmética octal y hexadecimal

Las diferentes operaciones aritméticas se pueden realizar en el sistema octal y en sistema hexadecimal de igual manera que en el sistema decimal o que en el sistema binario; basta con convertir el número octal o hexadecimal a binario o al decimal y, posteriormente, se efectúa la operación en el sistema intermediario (binario o decimal).

Por lo tanto, se descarta el acarreo del signo y se realiza complemento a 2 a la parte restante al signo (bit 14), porque el resultado del número es negativo.
En efecto, el resultado es:

- 00101101010112= — 26538= — 5ABH= -1451 Efectivamente, como el resultado es negativo, significa que no cupieron los archivos, pues quedaron faltando 1451 posiciones.

2.9 Sistemas de codificación computacional

Una sucesión de bits conforman un número binario y corresponden a lo que se denomina “codificación” de un dato. Este código puede ser procesado por el computador.
¿Qué pueden codificar los computadores? Pueden codificar lo siguiente:

. Las instrucciones que conforman un programa, las cuales son fijadas o determinadas por el fabricante y no pueden ser modificadas por el usuario; además, no tiene por qué hacerlo.

. Los datos que son de dos tipos: datos numéricos y los datos alfanuméricos. Dichas codificaciones se utilizan dependiendo del computador que se tenga, las cuales pueden tener 2n combinaciones con n= cantidad de bits.

Los datos alfanuméricos (caracteres literales: 26 letras minúsculas y 26 letras mayúsculas y, 26 caracteres especiales); además, los 10 dígitos tienen que codificarse para que sean representados en el computador.

El estándar de las máquinas de computación trabaja con 8 bits (códigos de 7 bits que producen 128 combinaciones para representar cualquier carácter y 1 bit de paridad1 que ayuda a las transmisiones de datos).

Se conocen varios sistemas de codificación que se utilizan para intercambiar información, entre otros son ellos: BCD, EBCDIC y ASCII.

1 Cuando se transmiten datos mediante el computador se suman los bits del carácter enviado; si la suma no coincide con el bit de verificación, según la paridad del computador (par o impar),

2.9.1 Sistema de codificación EBCDIC

Es una sigla que proviene del inglés Extended Binary Coded Decimal Interchange Code (Código de Intercambio Extendido Decimal Codificado en Binario). Es el código de los computadores IBM o compatibles con IBM como extensión del código BCD. Este sistema de codificación fue desarrollado por la IBM con un código de 8 bits (256 combinaciones) que representan caracteres alfanuméricos y los dígitos decimales dentro de 1 byte (8 bits). Los 4 primeros bits corresponden a los bits de zona que cambian así: la letras A-I con 1100, J-R con 1101, S-Z con 1110; los dígitos decimales con 1111 y, los caracteres especiales con diferente representación (0100, 0101, 0110, 0111). Los otros bits corresponden al código propio del carácter o dígito.

Ejemplo 2.20: Escriba en código EBCDIC la palabra ADIOS. En efecto, el código de cada letra es: A >11000001, D 11000100, I >11001001, O >11010110 y S >11100010. Luego, palabra ADIOS codificada en EBCDIC es: 1100000111000100110010011101011011100010

2.9.2 Sistema de codificación ASCII

Es una sigla que proviene del inglés American Standard Code for Information Interchange (Código Estándar Americano para el Intercambio de Información). Se pronuncia Ask-i). Este sistema fue desarrollado para sistemas de computación que no son de la IBM. Corresponde al código alfanumérico más utilizado en los diferentes sistemas de los microprocesadores.

Tabla 2.8: tabla de codificación EBCDIC
Al igual que código EBCDIC, también tiene los bits de zona: 0101, para lo dígitos; 1010, para las letras A-O; 1011 para las demás letras y, 0010, para algunos caracteres especiales.

Ejemplo 2.19: Escriba en código ASCII la frase, 15 LOBAS.
En efecto, el código quedaría: 00110001 00110101 00100000 01001100 01001111 01000010 01000001 01010011

AUTOEVALUACION 2
1. SELECCIÓN MÚLTIPLE DE MÚLTIPLE RESPUESTA

TALLER

ANALISIS DE RELACIÓN

--

--