Intro Sistemas Numéricos

Anuncio
Introducción
Los programadores escriben en diversos lenguajes de programación, algunos de ellos se pueden entender directamente, pero otros requieren pasos de traducción. Se utilizan cientos de lenguajes de computadora, los cuales pueden dividirse en:
1.­ Lenguajes de máquina
2.­ Lenguajes de ensamblador
3.­ Lenguajes de alto nivel
Una computadora dada sólo puede entender directamente su propio lenguaje máquina. El lenguaje de máquina es el “lenguaje natural“ de una computadora utilizado por su propio hardware, dicho lenguaje se representa por unos y ceros (binario). Los lenguajes de máquina son difíciles de usar para las personas. Conforme las computadoras se volvieron más populares, se hizo evidente que la programación en lenguaje máquina era sencillamente demasiado lenta y tediosa para la mayoría de los programadores. En lugar de usar las cadenas de números que las computadoras podía entender directamente, los programadores comenzaron a utilizar abreviaturas de palabras en inglés para representar las operaciones elementales de la computadora. Estas abreviaturas constituyeron el fundamento de los lenguajes ensamblador. Se crearon programas traductores llamados ensambladores para convertir los programas escritos en lenguaje de ensamblador a lenguaje de máquina. El uso de las computadoras aumento rápidamente con la aparición de los lenguajes de ensamblador, pero éstos requerían muchas instrucciones para llevar a cabo incluso la tareas más sencillas. A fin de acelerar el proceso de programación, se desarrollaron los lenguajes de alto nivel en los que se podía escribir un solo enunciado para realizar tareas sustanciales. Los programas traductores que convierten los programas escritos en lenguaje de alto nivel a lenguaje máquina se denominan compiladores. Los lenguajes de alto nivel permiten a los programadores escribir instrucciones que semejan el inglés cotidiano y contienen notaciones matemáticas de uso común.
Por desgracia, los programas en lenguaje de máquina son ininteligibles. Ni el fragmento de lenguaje máquina 00000010101111001010
00000010111111001000
00000011001110101000
ni el fragmento simbólico
LOAD I
ADD J
STORE
K
son tan claros como k=i+j
Suceso para reflexionar:
Un cohete que impulsaba al Mariner I, una sonda espacial no tripulada con destino a Venus, tuvo que ser destruida 290 segundos después del lanzamiento el 22 de Julio de 1962. La pérdida se estimó entre 18 y 20 millones de dólares.
El programa de computadora en tierra debió contener el siguiente fragmento:
Si no hay contacto del radar con el cohete entonces
no corregir su trayectoria
El no fue ignorado inadvertidamente, así que la computadora en tierra continuó guiando a ciegas el cohete después de que se perdió el contacto con el radar. El cohete se desvío y fue destruido antes de que pudiera poner en peligro vidas humanas. El programa se había utilizado previamente, sin ninguna falla en cuatro viajes a la luna. (Fuente: Lenguajes de Programación, Ravi Sethi, Ed. Addison Wesley).
Sistemas Numéricos
La importancia del sistema numérico decimal radica en que se utiliza universalmente para representar cantidades. Este sistema evolucionó en forma natural a partir del hecho de que el ser humano tiene 10 dedos. Incluso la palabra ``dígito'' significa ``dedo'' en latín. Existen otros sistemas numéricos, algunos de ellos son utilizados en los sistemas de cómputo. Tal es el caso del sistema numérico binario, ya que este es la representación del lenguaje de la computadora (lenguaje máquina). Otros dos sistemas numéricos utilizados con los sistemas de cómputos son el octal y hexadecimal.
Cada sistema numérico cuenta con una base, así por ejemplo para el sistema numérico decimal su base es el número 10. Para el sistema numérico binario, octal y hexadecimal sus bases son los números 2, 8 y 16 respectivamente. Para cada sistema se tiene un conjunto de símbolos, el conjunto del sistema numérico decimal tiene 10 elementos {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; al utilizar estos símbolos como dígitos de un número podemos expresar cualquier cantidad. Los conjuntos de símbolos de los sistemas binario, octal y hexadecimal son {0, 1}, { 0, 1, 3, 4, 5, 6, 7}, { 0, 1, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F }, respectivamente.
Si denotamos por la letra n a la base de cualquier sistema numérico, entonces tendremos n símbolos y el valor numérico del mayor símbolo será obtiene de la resta de n – 1. Para un sistema numérico cuya base es 5, se tiene un conjunto de 5 símbolos {0, 1, 2, 3, 4 } y el valor numérico mayor de estos símbolos es el número 4, obtenido de n ­ 1.
Notación Posicional
Todos los sistemas numéricos son también sistemas de valor posicional. En los sistemas de valor posicional el valor de un dígito depende de su posición. Por ejemplo, consideremos al sistema numérico decimal y el número 453. Sabemos que el dígito 4 representa en realidad 4 centenas, el 5 representa 5 decenas y el 3, 3 unidades. En esencia, el 4 porta el valor mayor de los tres dígitos; a éste se le conoce como el dígito más significativo (MSD). El número 3 tiene el valor menor y se denomina dígito menos significativo (LSD) Así el número 453 expresado en potencias de 10 (MSD)
4 x 102 + 5 x 101 + 3 x 100 = (453)10 (LSB)
En términos generales, cualquier número es simplemente la suma de los productos de cada valor digital por su valor posicional.
El número (111000101)2 es el número (453)10, ya que (111000101)2 = 1 x 28+1 x 27+1 x 26+0 x 25+0 x 24+0 x 23+1 x 22+0 x 21+1 x 20 = (453)10 Sistema Numérico Binario
El sistema numérico binario es importante en los sistemas de cómputo debido a que este es el medio para representar al lenguaje máquina. En este sistema solamente hay dos símbolos o posibles valores de dígitos, el 0 y el 1. No obstante, este sistema de base 2 se puede utilizar para representar cualquier cantidad que se denote en sistema decimal o algún otro sistema numérico. En el sistema binario, el término dígito binario se abrevia a menudo como bit, el bit mas significativo (MSB) es aquel que se encuentra más a la izquierda, el que tiene el valor mayor y el bit menos significativo (LSB) es aquel que está más a la derecha y tiene el menor valor. El término Byte se emplea para agrupar a 8 bits. 1Byte = 8 bits 1KByte = 1024 Bytes 1MByte = 1024 KBytes 1GByte = 1024 MBytes 1TByte = 1024 GBytes
Conversiones
Para convertir un número de una base a otra, en muchas ocasiones es necesario utilizar al sistema numérico decimal como parte intermedia. Es decir, al convertir el número (623)8 a (X)2. Primero convertimos el número (623)8 a base (X)10 y posteriormente se pasa el número (X)10 a base 2. La notación posicional es un método que permite convertir de una base diferente a 10 a la base 10 .
Convertir los siguientes números:
1.­ (111)2 ­> (X)10 1x22 + 1x21 + 1x20 = 4 + 2 +1 = (7)10 2.­ (123)8 ­> (X)10 1x82 + 2x81 + 3x80 = 64 + 16 + 3 = (83)10
3.­ (1FF)16 ­> (X)10
1 x 162 + 15 x 161 + 15 x 160 = 256 + 240 + 15 = (511)10
Las divisiones sucesivas es otro método empleado para las conversiones. Este método se emplea para convertir números en base 10 a cualquier otra base distinta de 10. Ejemplos:
1.­ Convertir (25)10 ­> (X)2
25 / 2 = 12 + residuo 1
12 / 2 = 6 + residuo 0
6 / 2 = 3 + residuo 0
(LSB)
3 / 2 = 1 + residuo 1
1 / 2 = 0 + residuo 1
(MSB)
0 / 2 = 0 + residuo 0 (los ceros a la izquierda no cuentan)
el número (25)10 = (11001)2
2.­ Convertir (1724)10 ­> (X)16
1724 / 16 = 107 + residuo 12 (LSB) (equivale a C en Hexadecimal)
107 / 16 = 6 + residuo 11 (equivale a B en Hexadecimal)
6 / 16 = 0 + residuo 6 (MSD)
0 /16 = 0 + residuo 0 (los ceros a la izquierda no cuentan)
el número (1724)10 = (6BC)16
Para convertir números Hexadecimales a binarios se sustituye cada dígito hexadecimal por su correspondiente valor en binario. Considere la siguiente tabla:
Decimal 0
1
2
3
4
5
6 7
8
9
10
11
12
13
14
15
Ejemplos:
Binario 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Hexadecimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
1.­ Convertir el número (1FF)16 ­> (X)2
1
F
F
0001 1111 1111
entonces el número (1FF)16 = (111111111)2
2.­ Convertir el número (F0A)16 ­> (X)2
F
0
A
1111 0000 1010 entonces el número (F0A)16 = (111100001010)2
Para convertir números octales a binarios se sustituye cada dígito octal por su correspondiente valor en binario. Considere la siguiente tabla:
Octal Binario 0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
Ejemplos:
1.­ Convertir el número (122)8 ­> (X)2
1 2 2
001 010 010 (122)8 = (1010010)2
Ejercicios propuestos (se recomienda realizar las siguientes conversiones).
1.­ Convierta los siguientes números binarios a decimal y octal:
a) 10110
d) 1111010111
b) 10001101
c) 10111111
2.­ Convierta los siguientes valores decimales a hexadecimal y binario:
a) 37
d) 205
b) 14
e) 2313
c) 189
f) 511
3.­ Convierta los siguientes valores hexadecimales a decimal y binario:
a) 92
d) 2C0
b) 1A6
e) 7FF
c) 37FD 
Descargar