Sistemas numéricos y tabla ASCII

Sitio: Facultad de Ingeniería U.Na.M.
Curso: Informática ET241/EM241/IC241/IN241/IM204
Libro: Sistemas numéricos y tabla ASCII
Imprimido por: Invitado
Día: miércoles, 3 de julio de 2024, 06:38

1. Contenidos

Este libro presenta los distintos tipos de base numérica que se usan en Informática, en particular en Python.

2. Sistema Numéricos

Un sistema de numeración es un conjunto de símbolos y reglas de generación de números que
permiten construir TODOS los números válidos en el sistema.

Cuando los hombres empezaron a contar usaron los dedos, marcas en bastones, nudos en una
cuerda y algunas otras formas para ir pasando de un número al siguiente. A medida que la
cantidad crece se hace necesario un sistema de representación más práctico. En diferentes
partes del mundo y en distintas épocas se llegó a la misma solución, cuando se alcanza un
determinado número se hace una marca distinta que los representa a todos ellos. Este número
es la base. Entonces la base de un sistema de numeración posicional indica la cantidad de
símbolos distintos necesarios para representar todos los números.
Identifiquemos algunos de los símbolos en las bases de los sistemas numéricos.

  • Símbolos del Decimal: 0,1,2,3,4,5,6,7,8,9 (cantidad 10 símbolos)
  • Símbolos del Octal: 0,1,2,3,4,5,6,7 (cantidad 8 símbolos)
  • Símbolos del Hexadecimal: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F (cantidad 16 símbolos)
  • Símbolos del Binario: 0,1 (cantidad 2 símbolos)
  • Símbolos del Romano: I,V,X,L,C,D,M. (cantidad 7 símbolos, ver que NO EXISTE el cero!!)

Como la cantidad de Símbolos que forman la base de cualquier sistema numérico es finita, es
necesario REUTILIZAR los símbolos para lograr mas números.
Cada uno de estos sistemas Numéricos tiene reglas de generación que permiten construir todos
los números válidos en el sistema, en algunos casos son mas fáciles unos que otros.

Observación:


La base que más se ha utilizado a lo largo de la Historia es 10 según todas las apariencias por
ser ese el número de dedos con los que contamos. Hay alguna excepción notable como son las
numeración babilónica que usaba 10 y 60 como bases y la numeración maya que usaba 20 y 5
aunque con alguna irregularidad. En la actualidad las Computadoras usan el sistema en Base
dos o Binario.

3. Base

Antes de analizar como se convierte un número de un sistema a otro, es importante destacar algunos aspectos.

Se denomina base de un sistema de numeración a la cantidad de símbolos que posee el sistema.

La base del:

  • sistema Decimal es 10
  • la del Binario es 2.
  • la del Hexadecimal 16
  • la del Octal 8

4. Sistemas Posicionales

En los sistemas modernos de numeración básicamente se usa el sistema posicional o ponderado, esto significa que dependiendo de la ubicación o posición dentro del número el símbolo tiene un peso distinto.
Ejemplo:

Para el caso del 12, el 1 tiene un peso de 10 o decena, y el 2 un peso de unidad.


En estos sistemas de numeración ponderados o posicionales el valor de un dígito depende tanto del símbolo utilizado, como de la posición que ése símbolo ocupa en el número: unidad, decena,centena, unidad de mil... etc.

Una consecuencia de esto es que operaciones como la suma o resta resultan (comparadas con las No posicionales) mas sencillas.
Como se sabe en una suma, se suma primero las unidades lo que supere a 10 se transporta a la decena y así sucesivamente.
Para la suma se ubican en cada columna los símbolos que tengan el mismo peso o ponderación
(unidades, decenas, centenas..).
Es importante notar que en estos sistemas EXISTE el 0 cero. Este símbolo no existe en los sistemas NO posicionales.

5. Sistemas NO posicionales

Los sistemas NO posicionales, son aquellos en que el Orden o Posición de los símbolos NO es importante, solo importa el Símbolo en si, el símbolo indica el valor.
Un sistema NO posicional fue el Sistema Egipcio, veamos un ejemplo:

Figura 1

Podemos ver que el símbolo cambia dependiendo del valor, no es que cambia de posición. El símbolo puede estar en cualquier lugar.. pero siempre vale lo mismo.

Vemos que este sistema Egipcio es del tipo de base decimal, pero NO es posicional. Veamos como se
escribía el número 276 y 3456

Figura 2

Se usaban tantos de cada uno cómo fuera necesario y se podían escribir indistintamente de izquierda a derecha, al revés o de arriba abajo, cambiando la orientación de las figuras según el caso, y como el valor no está dado por el orden o posición de los símbolos, dependían de cada  uno o criterios estéticos.

Veamos otro caso, el de los Números Romanos por ejemplo, para el caso de la suma no es tan
sencillo, ya que la posición no tiene que ver con la ponderación, brevemente veamos un ejemplo que lo que comentamos.

Figura 3

Es por eso que las operaciones básicas como suma o resta no son tan sencillas y ni hablar de la  multiplicación.

Sumar en sistemas NO posicionales es MUY difícil.

Pero no ahondaremos mas en este tipo de Sistemas numéricos, vamos a concentrarnos en los modernos y mas utilizados.

 ¿Buscar en Internet, que símbolo del Sistema Romano representa al Cero?

6. Sistema Decimal

El sistema de numeración decimal, es que usamos diariamente.

También llamado sistema decimal, es un sistema de numeración posicional en el que las cantidades se representan utilizando como base aritmética las potencias del número diez. El conjunto de símbolos utilizado (sistema de numeración arábiga) se compone de diez símbolos :

cero (0) - uno (1) -dos (2) - tres (3) - cuatro (4) - cinco (5) - seis (6) - siete (7) - ocho (8) y nueve (9).

Como ya dijimos los números son infinitos, pero los símbolos son finitos, por eso para generar nuevos números en un sistema posicional: Reutilizamos los símbolos y le cambiamos la posición para darle un nuevo peso.

Ejemplo:

Luego del 9 el próximo número se genera reutilizando el 0, pero para que que sea otro número se le pone un uno delante ( posición y peso) del cero. Resultado  el número :10

La manera de hacer referencia al sistema de numeración es escribiendo como sub-indice la base, ejemplo:

Figura 1: Esto se lee 5 en base 10

Como el Sistema Decimal es el de uso frecuente, se suele omitir esto y de todas maneras se entiende que es el sistema Decimal al que se hace referencia.

7. Sistema Hexadecimal

El sistema hexadecimal (abreviado como 'Hex', no confundir con sistema sexagesimal) es el sistema de numeración posicional que tiene como base el 16.

Tiene 16 símbolos , de allí el nombre.

Su uso actual está muy vinculado a la informática y ciencias de la computación donde las operaciones de la CPU suelen usar el byte u octeto como unidad básica de memoria.

En principio, dado que el sistema usual de numeración es de base decimal y, por ello, sólo se dispone de diez dígitos, se adoptó la convención de usar las seis primeras letras del alfabeto latino para suplir los dígitos que nos faltan. El conjunto de 16 símbolos es el siguiente:

    S = { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , A , B , C , D , E , F }

Se debe notar que las letras corresponden a los siguientes valores numéricos decimales:

    A = 10, B = 11, C = 12, D = 13, E = 14 y F = 15.

Reiteramos que los números son infinitos, pero los símbolos son finitos, por eso para generar nuevos números en un sistema posicional: Reutilizamos los símbolos y le cambiamos la posición para darle un nuevo peso.

  • Si el último símbolo del Sistema Hexadecimal es la F, ¿cual sería el próximo número , si entiendo que el sistema es posicional?
  • ¿Cuanto sería en el Sistema Hexadecimal  A + 2?
  • ¿Cuanto sería en el Sistema Hexadecimal A + B?

Observación:

Ver que automáticamente la mayoría de nosotros realizamos una conversión pensando en el Sistema Decimal.

Ver que alguien que no entienda lo que hacemos vería que sumamos letras con números y letras entre si

La manera de hacer referencia al sistema de numeración es escribiendo como sub-indice la base, ejemplo:

Figura 1.

Se lee A en base Hexadecimal mas 5 en base Hexadecimal.

8. Sistema Sexagesimal

El sistema sexagesimal es un sistema de numeración posicional que emplea como base el número 60.

¿Que sistema que Uds. conozcan usa el Sistema de Numeración Sexagesimal?

Observación: NO confundir

Sexagesimal -> Sesenta (60). Esto se usa en el sistema horario, en Geometría para medir ángulos.

Hexadecimal -> Dieciséis (16) Esto se usa en Informática.

9. Sistema Binario

02=010 

El sistema numérico de base binaria tiene dos símbolos: 0 ( cero) y 1(uno)

Es uno de los sistemas que se utilizan en las computadoras, debido a que estas trabajan internamente con dos niveles de: voltaje o corriente.

El sistema de numeración binario es natural aunque no lo parezca.

Ejemplo:

  • Prendido - Apagado.
  • Lleno - Vacío
  • On - Off
  • Si - No
  • Todo - Nada

Como vemos estos términos son binarios!!

Reiteramos que los números son infinitos, pero los símbolos son finitos (son dos  0 y 1, no hay mas!), por eso para generar nuevos números en un sistema posicional: reutilizamos los símbolos y le cambiamos la posición para darle un nuevo peso.

02=010 

12=110 

 como se terminaron los símbolos, los reusamos.. pero ahora tienen un peso distinto por que están en otra posición, son sistemas numéricos posicionales, ver que los de mas peso se agregan a la izquierda.. tal como lo hacemos en el sitema decimal que usamos normalmente ( 0, 10, 100..9, 19, etc). Veamos como queda...

102=210 

112=310 

Nuevamente como se terminaron los símbolos, los reusamos.. pero ahora tienen un peso distinto por que están en otra posición. 

1002=410 

1012=510

1102=610

1112=710

¿Como se representaría en el sistema binario los siguientes números?

10112= ________  10 ?

10012= ________  10?

1000 2= ________  10?

00112= ________  10?

Se deja un video de una Calculadora Binaria que funciona con bolitas, permite fijar conceptos de números y operaciones binarias.


10. Sistema Octal

El sistema de numeración octal no es muy conocido.

También llamado sistema octal, es un sistema de numeración posicional en el que las cantidades se representan utilizando como base aritmética las potencias del número ocho. El conjunto de símbolos utilizado (sistema de numeración arábiga) se compone de ocho símbolos :

cero (0) - uno (1) -dos (2) - tres (3) - cuatro (4) - cinco (5) - seis (6) - siete (7)

Observación:

  • Ver que del 0 al 7 son 8 símbolos!
  • Ver que el 8, NO forma parte de la Base Numérica del sistema Octal

Como ya dijimos los números son infinitos, pero los símbolos son finitos, por eso para generar nuevos números en un sistema posicional: Reutilizamos los símbolos y le cambiamos la posición para darle un nuevo peso.

Ejemplo:

Luego del 7 el próximo número se genera reutilizando el 0, pero para que que sea otro número se le pone un uno delante ( posición y peso) del cero. Resultado  el número :10 en octal que reprenta al 8 en decimal

 

11. Conversión de cualquier base a Decimal

Como el sistema decimal es natural para nosotros, veremos somo convertir todo a decimal y luego en todo caso como convertir de decimal a otro sistema numérico.

La siguiente expresión permite convertir desde cualquier sistema numérico de base "r"  a la Decimal.

Veamos como usar esto para las bases binaria , hexadecimal y octal. De antemano mostramos las soluciones.

Binario -> Decimal

Reemplazamos cada di por el símbolo correspondiente:

Hexadecimal -> Decimal

Octal -> Decimal

Se deja como tarea para la casa.

12. Conversión de Decimal a cualquier base

Para convertir un número en base 10 a uno binario debemos dividir sucesivamente por 2 hasta que no quede resto. Luego armamos el número tomando los valores como muestra la imagen, desde el último al primero

Para convertir un número en base 10 a uno hexadecimal debemos dividir sucesivamente por 16 hasta que no quede resto. Luego armamos el número tomando los valores como muestra la imagen, desde el último al primero

Para convertir un número en base 10 a uno octal debemos dividir sucesivamente por 8 hasta que no quede resto. Luego armamos el número tomando los valores como muestra la imagen, desde el último al primero

13. Capacidad de Almacenamiento Binario

La capacidad de almacenamiento en informática está estrechamente relacionado con el sistema binario, ya que las computadoras usan ese sistema internamente.

¿Por qué Unos y Ceros?

Porque la tecnología de las computadoras se basa en la sencillez de construir dispositivos binarios, con dos posibles estados:

encendido   
 verdadero 
 uno 
apagado
  falso
 cero

¿Es posible representar datos tan variados como números, textos, imágenes, sonido, videos, con sólo unos y ceros? La respuesta es SI, lógicamente como vimos el Sistema Numérico Binario solo tiene 2 símbolos y hay que reutilizarlos para formar números mayores a 1. Cada símbolo conoce como bit.

Un bit (acrónimo de las palabras binary digit) puede ser 0 ó 1, por lo que para poder representar muchos valores necesitaremos MUCHOS bits.

Surge históricamente una asociación de bits que perdura en el tiempo y se conoce como Byte.
Un Byte es un conjunto de 8 bits, 1 Byte = 8 bits.
Un sistema numérico frecuentemente se utiliza en sistema métricos, así por ejemplo:

  • 1000 gramos = 1 Kg
  • 1000 Kg = 1 Tonelada
  • 10 mm = 1 centímetro
  • 100 centímetros = 1 metro 
  • 1000 metros = 1 Kilómetro

Lo mismo sucede para medir la métrica del tamaño de la información (cantidad de bits)

Antes cabe aclarar que todos los valores expresados a continuación son números enteros, y además que se explica en bytes y no bits, ya que lo cierto es que 1 Kilobyte (KiB) es diferente de 1 Kilobit (Kb), y en realidad cuando hablamos de capacidad de almacenamiento debemos hablar de bytes, ya que es el término que debe emplearse en este ámbito.

En sistemas decimales, kilo significa 1.000 (mil) , pero el mundo de los ordenadores se basa en un sistema binario de dos símbolos en vez de diez. Así tenemos que 29=512 y 210 =1024. Se toma el valor mas próximo a 1000, que sería 1024 como Kilo. Así pues, un Kilobyte es realmente 1.024 (=210) bytes. Para distinguir entre una K decimal (1.000) y una K binaria (1.024), el IEEE ha sugerido usar una k minúscula para un kilo decimal y una K mayúscula para un kilo binario.

¿A cuánto equivale un Kilobyte?. Si se aplica la definición de prefijo binario:

El kilobyte equivale a dos bytes elevados a la décima potencia  (2 Bytes)10=1024 Bytes=1KB.

El KiloByte o KB es adoptado por Sistema Internacional de Unidades y permite que en todo el mundo la medida sea única. Para el mundo de la informática los términos de Bit, Byte, Kilobyte, Megabyte, Gigabyte y Terabyte son conceptos que se emplean para determinar cuál es el tamaño o el espacio que ocupa un archivo en una unidad de almacenamiento. Así mismo, son términos que permiten identificar cuál es la capacidad de almacenamiento. 

Resumiendo:

14. ASCII

Hasta ahora, vimos los sitemas numéricos como el Decimal, Octal, Hexadecimal y binario.
En estos sistemas nos referimos a números o a la equivalencia de representación de números de un sistema a otro... ¿pero que hay de los caracteres letras y símbolos?
Estos también necesitan almacenarce en la computadora, y como la computadora usa ceros y unos, tenemos que crear una relación entre una secuencia de 0s y 1s que correcponda a una letra o símbolo, eso es lo que hace la Tabla ASCII.

Es por eso que los caracteres ASCII son una representación binaria de  los caracteres (letras y números).

El ASCII es un código numérico (binario/decimal/hexadecimal) que representa los caracteres.


ASCII es el acrónimo que corresponde a la expresión inglesa American Standard Code for Information Interchange. Dicha frase puede traducirse como Código Estándar Americano para el Intercambio de Información. Se trata de un patrón de codificación que se emplea en el ámbito de la informática.
¿Codificación de que? Codificación o representación de ceros y unos que representan caracteres del alfabeto.

Esto quiere decir que el ASCII sirve para convertir valores principalmente binario ( pueden ser otros sistemas numéricos)  de cero y uno a través de una serie de reglas a un carácter que forma parte de un lenguaje natural (como una letra de un alfabeto) en un símbolo que pertenece a otro lenguaje ( el nuestro por ejemplo)

Para la representación de caracteres, el ASCII usa 7 bits. 27 me da la cantidad de combinaciones posibles de 0s y 1s.

Como 27 = 128  vamos a tener 128 representaciones distintas ( de 0 a 127) . En esta representación van a existir caracteres que nos son familiares (a,b,c, A,B,C ) que son Imprimibles ,como otros que no lo son.

El código permite definir 32 caracteres que no son imprimibles, seguidos por 95 caracteres imprimibles. Al tratarse de un código de 7 bits, apela a cadenas de bits que pueden representarse con siete dígitos binarios, los cuales en base decimal se encuentran entre 0 y 127.

Para la representación de un ASCII se puede usar el Valor Decimal, el Hexadecimal y Binario.

14.1. Tabla ASCII

14.2. Caracteres dígitos y números.

Normalmente los alumnos entienden que se debe utilizar una combinación de 0s y 1s para representar las letras.. pero luego surge el tema que los dígitos también necesitan ser representados.

Surge aquí una diferencia entre un caracter dígito: 0,1,2,3,4,5,6,7,8,9 y un número con representación decimal.

Cuando en un procesador de texto escribimos un dígito, este NO ES INTERPRETADO como número por el procesador de texto, si por el lector. Si por ejemplo en un Procesador de Texto  Ud. escribe 1+2, no le dará ningún resultado..

Si en el editor de texto anterior..  escribimos =3, esta será una interpretación del Procesador ( persona que lee el texto) pero para el editor de textos.. los caracteres dígitos son igual que las letras.

Si en cambio lo hace en una planilla de cálculo o una calculadora le dirá que el resultado es 3.

15. Ejercicios

  1. Buscar en internet como se puede lograr el símbolo @, si no existe en el Teclado y ver que relación tiene con la tabla de ASCII.
  2. Hacer una tabla de 4 columnas y 10 filas. Escribir en
    • Primer columna: valores decimales del 010 al 910
    • Segunda columna: Valores Binarios del 02 a 92
    • Tercer columna: valores caracteres dígitos ASCII 0 a 9
    • Cuarta Columna: valores binarios que representan los caracteres dígitos ASCII
  3. Buscar en internet como se suman valores binarios..luego sumar 12 + 22 y escribir el resultado de esta suma que sería 32. Escribir la representación binaria de 1 en ASCII y la representación binaria de ASCII de 2 y sumar... interpretar el resultado.
  4. ¿Por qué en binario 12 + 12 es igual a 10 y no 2?
  5. Escriba el 2 en formato binario y 3 en formato binario. ¿Qué diferencia tienen uno con otro en la base binaria? y el la decimal ¿Qué relación hay entre 102 y 310?
  6.  Utilizando la Calculadora en modo programación busque y valor de :
    • 10011002 y exprese este número en sistema:  decimal, hexadecimal y octal.
    • 11011002 y exprese este número en sistema: decimal, hexadecimal y octal.
  7. Busque la codificación binaria de las Letras "l" y "L" en la tabla de ASCII.
  8. ¿Cree que se puede comparar  letras? Por ejemplo "L"> "l" , en caso de que su respuesta sea Afirmativa Justifique que cree que daría la comparación.
  9. ¿Cree que se puede comparar  el carácter "0" con el "9" ? no son números, son caracteres Por ejemplo "9"> "0" , en caso de que su respuesta sea Afirmativa Justifique que cree que daría la comparación.
  10. Compare el Número binario 10011002 con el valor decimal que corresponde  y busque si hay alguna codificación de la tabla ASCII que coincide con el valor binario 10011002  y escriba el Caracter ASCII y el valor Decimal del Caracter ASCII ( esto está en la Tabla de Caracteres ASCII).
  11. Utilizando la función ord , determine desde el interprete de Python  el valor decimal de "L" ,"l" , "0", "1", "2", "3" ( Link a ref. web )

16. Ejercicios Propuestos.

¿Indique como expresaría en el sistema Hexadecimal  1610  1710  1810 ?

¿Indique como expresaría en el sistema Octal  810  910  1210 ?

¿Indique como expresaría en el sistema Binario  710  810  910  1210 ?

Convierta el número binario:  1010102 a Decimal realizando el cálculo correspondiente.

Convierta el número decimal: 11010  a binario realizando el cálculo correspondiente.

Convierta el número hexadeciaml: 1616  a binario realizando el cálculo correspondiente.

17. Python y los sistemas numéricos.

Veremos como trabajar con los distintos sistemas numércios en Python

17.1. Binario

Python y el Sistema Binario.

z=10
print(bin(z))




17.2. Octal

z=10
print(oct(z))

17.3. Hexadecimal

z=10
print(hex(z))