1 matematica digital

15
1 Para llevar a su complexión la ciencia, es preciso recorrer una a una todas las cosas que pertenecen al fin que nos hemos propuesto mediante un movimiento del pensamiento continuo e ininterrumpido, y es preciso abarcarlas en una enumeración suficiente y metódica. René Descartes – Reglas para la dirección de la mente – Regla VII - 1628. En términos generales, se define un sistema digital como un sistema de procesamiento de información en el que la información está representada por señales que sólo pueden tomar valores discretos. Cuando estas señales están restringidas a tomar sólo dos de estos valores, se dice que el sistema es binario. Como es sabido, los computadores son sistemas binarios de procesamiento de información, por lo que es conveniente un paseo por los fundamentos matemáticos que se aplican al funcionamiento de estos dispositivos, así como de la terminología adecuada. 1.1 Sistemas de Numeración Un sistema de numeración se constituye con un conjunto ordenado de N símbolos, llamados dígitos. El número N es llamado “base” o “rádix” del sistema y establece el valor de la posición de cada dígito en un número de tal manera que el valor del número se obtiene de realizar un desarrollo del mismo como polinomio de potencias de la base –a lo que se llama notación ampliada–, por ejemplo, la siguiente identidad: 782 10 = (7×10 2 )+(8×10 1 )+(2×10 0 ) = = 2 0 i i i N d expresa que el número 782 está representado en un sistema de base 10 y muestra al mismo como un polinomio de potencias de 10 o, como se dice en aritmética primaria, 782 es igual a 2 unidades más 8 decenas más 7 centenas. Así se tiene entonces que cada dígito tiene un valor nominal –el valor expresado por el dígito mismo– y un valor de posición: en el ejemplo, el 7 tiene un valor de posición de 700, el 8 un valor de posición de 80, etc. Dado entonces que el valor de un número así representado está determinado por la posición de sus dígitos, se dice que este sistema es posicional. Los cuatro sistemas de numeración más utilizados en computación son mostrados en la Tabla 1-1; observe que en todos ellos, no existe un símbolo propio para cantidades mayores que la base, por ejemplo, no existe un símbolo para el 10 en el sistema decimal, así como no existe un símbolo para el 2 en el sistema binario ni para el 8 octal ni para el 16 hexadecimal. Otros sistemas de numeración utilizados incluyen al ternario –base 3– y al duodecimal –base 12– así como al sistema de numeración romano que, aunque no es un sistema posicional, ha sido utilizado desde los tiempos del Imperio Romano hasta nuestros días. 1.2 Sistema de numeración decimal Es el sistema de numeración usado por los humanos, hecho que se atribuye a que éstos tienen 10 dedos, los que fueron útiles para la primera operación numérica llevada a SISTEMA BASE DÍGITOS ORDENADOS EJEMPLO COMENTARIO Decimal 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 X = X 10 Se dice que es el utilizado por los humanos por tener éstos 10 dedos. Binario 2 0, 1 101010 2 = 42 10 Es el utilizado por los sistemas digitales. Sus dígitos son llamados bits. Octal 8 0, 1, 2, 3, 4, 5, 6, 7 52 8 = 42 10 Posee un símbolo diferente para cada número binario del 000 al 111. Hexadecimal 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 2A 16 = 42 10 A 16 =10 10 , B 16 =11 10 , C 16 =12 10 , D 16 =13 10 , E 16 =14 10 , F 16 =15 10 . Proporciona un modo compacto para trabajar con binarios. Tabla 1-1 Algunos Sistemas de Numeración A PROPÓSITO Cuando se trabaja con distintos sistemas de numeración, se suele colocar la base en la que está representado el mismo como un subíndice. Observe en el ejemplo anterior: 782 10 significa entonces, 782 en base 10.

Upload: mrtnzhola

Post on 09-Aug-2015

43 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 1 Matematica Digital

1

Para llevar a su complexión la ciencia, es preciso recorrer una a una todas las cosas que pertenecen al fin que nos hemos propuesto mediante un movimiento del pensamiento continuo e ininterrumpido, y es preciso abarcarlas en una enumeración suficiente y metódica.

René Descartes – Reglas para la dirección de la mente – Regla VII - 1628. En términos generales, se define un sistema digital como un sistema de procesamiento de información en el que la información está representada por señales que sólo pueden tomar valores discretos. Cuando estas señales están restringidas a tomar sólo dos de estos valores, se dice que el sistema es binario. Como es sabido, los computadores son sistemas binarios de procesamiento de información, por lo que es conveniente un paseo por los fundamentos matemáticos que se aplican al funcionamiento de estos dispositivos, así como de la terminología adecuada.

1.1 Sistemas de Numeración Un sistema de numeración se constituye con un conjunto ordenado de N símbolos, llamados dígitos. El número N es llamado “base” o “rádix” del sistema y establece el valor de la posición de cada dígito en un número de tal manera que el valor del número se obtiene de realizar un desarrollo del mismo como polinomio de potencias de la base –a lo que se llama notación ampliada–, por ejemplo, la siguiente identidad:

78210 = (7×102 )+(8×101 )+(2×100 ) = ∑=

2

0i

ii Nd

expresa que el número 782 está representado en un sistema de base 10 y muestra al mismo como un polinomio de potencias de 10 o, como se dice en aritmética primaria, 782 es igual a 2 unidades más 8 decenas más 7 centenas. Así se tiene entonces que cada dígito tiene un valor nominal –el valor expresado por el dígito mismo– y un valor de posición: en el ejemplo, el 7 tiene un valor de posición de 700, el 8 un valor de posición de 80, etc. Dado entonces que el valor de un número así representado está determinado por la posición de sus dígitos, se dice que este sistema es posicional.

Los cuatro sistemas de numeración más utilizados en computación son mostrados en la Tabla 1-1; observe que en todos ellos, no existe un símbolo propio para cantidades mayores que la base, por ejemplo, no existe un símbolo para el 10 en el sistema decimal, así como no existe un símbolo para el 2 en el sistema binario ni para el 8 octal ni para el 16 hexadecimal. Otros sistemas de numeración utilizados incluyen al ternario –base 3– y al duodecimal –base 12– así como al sistema de numeración romano que, aunque no es un sistema posicional, ha sido utilizado desde los tiempos del Imperio Romano hasta nuestros días.

1.2 Sistema de numeración decimal

Es el sistema de numeración usado por los humanos, hecho que se atribuye a que éstos tienen 10 dedos, los que fueron útiles para la primera operación numérica llevada a

SISTEMA BASE DÍGITOS ORDENADOS EJEMPLO COMENTARIO

Decimal 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 X = X10 Se dice que es el utilizado por los humanos por tener éstos 10 dedos.

Binario 2 0, 1 1010102 = 4210 Es el utilizado por los sistemas digitales. Sus dígitos son llamados bits.

Octal 8 0, 1, 2, 3, 4, 5, 6, 7 528 = 4210 Posee un símbolo diferente para cada número binario del 000 al 111.

Hexadecimal 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 2A16 = 4210

A16=1010, B16=1110, C16=1210, D16=1310, E16=1410, F16=1510. Proporciona un modo compacto para trabajar con binarios.

Tabla 1-1 Algunos Sistemas de Numeración

A PROPÓSITO Cuando se trabaja con distintos sistemas de numeración, se suele colocar la base en la que está representado el mismo como un subíndice. Observe en el ejemplo anterior: 78210 significa entonces, 782 en base 10.

Page 2: 1 Matematica Digital

Pag. 1-2 Cap.1 : Principios Digitales

Programación con Delphi Ing. José Ricardo Vargas

cabo por ellos: contar. Por esta razón es que las potencias de diez no son escritas sino que se implican en la posición de cada dígito. Este sistema adquiere una singular importancia cuando se trabaja con varios sistemas de numeración porque, como se verá más adelante, para llevar a cabo conversiones entre distintos sistemas es necesario operar en la aritmética de uno de esos sistemas, lo cual no es fácil ya que la mayoría de las personas sólo están familiarizadas con la aritmética decimal.

1.3 Sistema Binario

Como se muestra en la Tabla 1-1, este sistema es de base 2, por lo que emplea sólo dos símbolos: 0 y 1. Cualquier valor en él estará entonces escrito como una secuencia de ceros y unos en el que la posición de cada dígito binario corresponde a una potencia de dos, comenzando con 20 en el lugar de la unidad, por ejemplo:

1010102 = 1×25 + 0×24 + 1×23 + 0×22 + 1×21 + 0×20

que también se puede escribir como:

1010102 = 1×32 + 0×16 + 1×8 + 0×4 + 1×2 + 0×1

De igual forma, los números binarios con parte fraccionaria representan a ésta parte ubicada a la derecha del punto fraccionario, por ejemplo:

101.0112 = 1×22 + 0×21 + 1×20 + 0×2-1 + 1×2-2 + 1×2-3

Observe en el ejemplo anterior, que las posiciones a la derecha del punto fraccionario corresponden a potencias negativas de dos. Los números negativos se representan de forma similar a los números en base diez, es decir, anteponiendo el signo “-“ al número. Así, -610 = -1102.

La Tabla 1-2 muestra la equivalencia de los números decimales del 0 al 15 con su representación binaria, octal y hexadecimal.

A PROPÓSITO Es frecuente encontrar números binarios escritos con ceros a la izquierda, hasta completar una cantidad fija de dígitos; así, números como el uno (1) se encuentran escritos de la siguiente manera: 0001.

1.4 Sistema Octal

Es el sistema de base ocho; utiliza los símbolos mostrados en la Tabla 1-1 y, como cualquier sistema de numeración, también forma números mediante el valor de posición de los dígitos, por ejemplo

428 = 4×81 + 2×80 es decir, que cada número octal puede ser representado como un polinomio de potencias de ocho: 80 para la posición de la unidad, potencias positivas de ocho para el

resto de la parte entera del número y potencias negativas de ocho para la parte fraccionaria. Igualmente, se antepone el signo “-“ para formar un número negativo. La utilidad principal de este sistema está en que proporciona un método abreviado para trabajar con números binarios: observe que existe un símbolo distinto de número octal para los números binarios del 0 al 111 y que un número binario de mayor número de dígitos puede ser escrito agrupando dígitos en grupos de tres, de derecha a izquierda para la parte entera y de izquierda a derecha para la parte fraccionaria, para luego traducir cada grupo en su correspondiente representación octal. Observe los siguientes ejemplos: 1010001112 = 101 000 1112 = 5078

110001011.10112 = 110 001 011. 101 1002 = 613.548 11101112 = 001 110 1112 = 1678

1.5 Sistema Hexadecimal

También denominado sistema hex, es el sistema de base dieciséis; utiliza los símbolos mostrados en la Tabla 1-1: observe que, dado que la base del sistema es mayor que 10, este sistema utiliza más símbolos que los diez utilizados en el sistema decimal; por ello se ha convenido en adoptar a las letras A, B, C, D, E y F como los símbolos para los valores hexadecimales que corresponden a los valores decimales 10, 11, 12, 13, 14 y 15 respectivamente, como también se muestra en la Tabla 1-2. Para formar un número en este sistema, igualmente se usa el valor de posición de cada dígito, de tal modo que: 3D2.A816 = 3×162 + 13×161 + 2×160 + 10×16-1 + 8×16-2 es decir, que a semejanza con los otros sistemas, cada número hexadecimal puede ser representado como un polinomio de potencias de dieciséis: 160 para la posición de la unidad, potencias positivas de dieciséis para el resto de la parte entera del número y potencias negativas de dieciséis para la parte fraccionaria. También, se antepone el signo “-“ para formar un número negativo. La utilidad principal de este sistema está en que, de igual forma que el sistema octal, proporciona un método abreviado para trabajar con números binarios: observe que existe un símbolo distinto de número hexadecimal para los números binarios del 0 al 1111 y que un número binario de mayor número de dígitos puede ser escrito agrupando dígitos en grupos de cuatro, de derecha a izquierda para la parte entera y de izquierda a derecha para la parte fraccionaria, para luego traducir cada grupo en su correspondiente representación hexadecimal. Observe los siguientes ejemplos:

DEC HEX BIN OCT 0 0 0 0 1 1 1 1 2 2 10 2 3 3 11 3 4 4 100 4 5 5 101 5 6 6 110 6 7 7 111 7 8 8 1000 10 9 9 1001 11

10 A 1010 12 11 B 1011 13 12 C 1100 14 13 D 1101 15 14 E 1110 16 15 F 1111 17

Tabla 1-2: Equivalencia entre sistemas de numeración

Page 3: 1 Matematica Digital

Cap.1: Principios Digitales Pag. 1-3

Programación con Delphi Ing. José Ricardo Vargas

110101112 = 1101 01112 = D716

10101110.101112 = 1010 1110. 1011 10002 = AE.D816 11101112 = 0111 01112 = 7716

1.6 Conversión entre sistemas

De cualquier sistema a decimal: Basta con desarrollar el número como un polinomio de potencias de la base original y evaluar la expresión resultante en base decimal. Ej.: Binario a decimal: 101012= 1×24 +0×23 +1×22 +0×21 +1×20 =16 + 4 + 1 = 2110 111.012 = 1×22 +1×21 +1×20 +1×2-2 = 4 + 2 + 1 + 0.25 = 7.2510 -1010.12 = -(1×23 + 1×21 + 1×2-1 ) = -(8 + 2 + 0.5) = -10.510 Observe que en el segundo y en el tercer ejemplo no se escribieron los términos multiplicados por cero; esta es una práctica habitual. Ej.: Hexadecimal a decimal: 2A16 = 2×161 + A×160 = 32 + 10 = 4210 5.4D16 = 5×160 + 4×16-1 + 13×16-2 = 5 + 0.25 + 0.0508 = 5.300810 -3E.F16 = -(3×161 + 14×160 + 15×16-1 ) = -(48 + 14 + 0.9375) = -62.937510 Ej.: Octal a decimal: 1238 = 1×82 + 2×81 + 3×80 = 64 + 16 + 3 = 8310 42.218 = 4×81 + 2×80 + 2×8-1 + 1×8-2 = 32 + 2 + 0.25 + 0.015625 = 34.26562510 -3.728 = -(3×80 + 7×8-1 + 2×8-2 ) = -(3 + 0.875 + 0.03125) = -3.9062510 De decimal a cualquier sistema: Si el número contiene una parte fraccionaria, entonces la conversión se realiza en dos partes: una para la parte entera y otra para la parte fraccionaria. Parte entera: Se divide el número –en base decimal– entre la base a la que se desea convertir, conservando el residuo. Se repite sucesivamente la operación con el cociente restante hasta que el mismo sea cero. Luego, el número convertido se formará con los residuos tomados desde el último hasta el primero.

Decimal a binario Decimal a Hexadecimal20 2 0 10 2

0 5 2 1 2 2 0 1 2 1 0

Entonces 2010 = 101002

967 16 7 60 16

12 3 16 3 0

Entonces 96710 = 3C716

Parte fraccionaria: Se multiplica la parte fraccionaria –en base diez– por la base a la que se desea convertir y se conserva la parte entera del resultado. De este resultado se

sustrae la parte entera y se vuelve a multiplicar la parte fraccionaria restante por la base a la que se desea convertir. Se repite el proceso hasta que la parte fraccionaria del producto de la multiplicación es 0.00, cosa que no siempre ocurre, en cuyo caso deberá detenerse el proceso cuando se haya alcanzado una precisión aceptable. Luego, el número convertido se formará con las partes enteras conservadas, siendo la primera la que se coloca inmediatamente después del punto fraccionario, incluyendo la del último producto.

Decimal a binario Decimal a Hexadecimal

0.375 x 2 = 0.75 0.75 x 2 = 1.50 0.50 x 2 = 1.00

Entonces 0.37510 = 0.0112

0.421875 x 16 = 6.750.75 x 16 = 12.0

Luego 0.42187510 = 0.6C16

Combinando los ejemplos anteriores, se tiene:

20.37510 = 10100.0112 y 967.42187510 = 3C7.6C16

Entre binario, octal y hexadecimal: Como ya se explicó en 1.4 y en 1.5, la utilidad de los sistemas hexadecimal y octal se encuentra en la facilidad con que se puede llevar a cabo la conversión entre estos sistemas y el sistema binario, mediante la agrupación de dígitos de derecha a izquierda para la parte entera y de izquierda a derecha para la parte fraccionaria, en grupos de tres dígitos para convertir a sistema octal o en grupos de cuatro dígitos para convertir a sistema hexadecimal, y luego usar las equivalencias dadas en la Tabla 1.2. Así: 101000111.011012 = 101 000 111 . 011 010 = 507.328 101000111.011012 = 0001 0100 0111 . 0110 1000 = 147.6816 Observe que ha sido necesario agregar ceros a la izquierda de la parte entera o a la derecha de la parte fraccionaria para completar un grupo de 3 o 4 bits. De un sistema de base b1 a un sistema de base b2: Vea el caso de conversión de cualquier sistema a sistema decimal: en él se emplea la representación del número como polinomio de potencias de la base para luego resolverlo en base decimal. Al contrario, cuando se desea convertir un número en base decimal a cualquier otra base, se emplea la división sucesiva del número entre la base, llevando a cabo estas divisiones en base decimal. Todo esto indica tres cosas: primero, que para convertir un número en base b1 a base b2, se puede convertir primero de base b1 a decimal y luego de decimal a base b2. Segundo, que también se puede convertir de base b1 a base b2 representando el número como un polinomio de potencias de la base b1 y luego resolviendo el polinomio pero llevando a cabo las operaciones en base b2, lo cual puede resultar difícil si no se maneja con soltura la aritmética en dicha base –razón por la cual no se trata en

Page 4: 1 Matematica Digital

Pag. 1-4 Cap.1 : Principios Digitales

Programación con Delphi Ing. José Ricardo Vargas

A PROPÓSITO

este texto–. Y tercero, que también se puede convertir de base b1 a base b2, realizando divisiones sucesivas entre b2 pero llevando a cabo las operaciones en base b1, lo cual, como se acaba de mencionar, puede resultar difícil.

En computación, las unidades de medida fundamentales son el bit y el

byte. La palabra Bit es un acrónimo de las palabras Binary digit (dígito binario). Dado que el sistema de numeración binaria emplea sólo 2 símbolos (0 y 1) y que los sistemas de manipulación de información digitales emplean fundamentalmente el sistema binario, se dice que un bit es la unidad más simple de información que un sistema digital puede manejar. Dicho de otra manera, un componente digital sólo manipula dos estados representados por un bit: 0=apagado y 1=encendido.

Un byte, en su definición original, es una agrupación de bits. La popularidad de los primeros microcomputadores trajo consigo la popularidad de algunos términos relacionados y uno de ellos es el byte, que para esos primeros microcomputadores era una agrupación de 8 bits. Por ello, aún cuando actualmente los computadores personales trabajan con bytes de 64 bits o más, el término byte quedó establecido en la terminología popular como aquel de 8 bits. Los bytes cuyo número de bits es múltiplo de 8 tienen denominaciones especiales: Word (16 bits), Doubleword (32 bits), Quadword o Longword (64 bits) y Double Quadword (128 bits).

A PROPÓSITO Cuando se habla en un contexto informático debe tenerse una especial precaución de no confundir el significado de los prefijos numéricos ya que en éste son distintos. Así, por ejemplo, un Kilobyte no es igual a 1000 bytes (o 103) sino a 1024 (o 210). Vea la tabla 1-3.

Prefijo Normal Informático

Kilo 103 o mil 210 o 1.024

Mega 106 o un millón 220 o 1.048.576

Giga 109 o mil millones 230 o 1.073.741.824

Tera 1012 o un billón 240 o 1.099.511.627.776

Tabla 1-3 Prefijos informáticos

1.7 Códigos binarios

Un computador no sólo manipula datos numéricos, también manipula datos alfabéticos, gráficos, de multimedia, etc. Por ello ha sido necesario desarrollar códigos que permitan traducir elementos no numéricos a secuencias de unos y ceros para que éste pueda manejarlos. Es responsabilidad de cada aplicación interpretar correctamente su significado. A continuación se mencionan algunos de los más populares. Código BCD: (Binary Coded Decimal) Existe en varias versiones. La más utilizada, también llamada BCD 8421, es una codificación que consiste en utilizar sólo la representación binaria de los números del 0 al 9 para formar cualquier número, dígito a dígito. Por ejemplo, para convertir el número 71510 se utiliza la representación binaria del 7 seguida de la del 1 y seguida de la del 5 para formar el BCD, es decir:

71510 = 111 0001 0101 = 11100010101BCD

Código ASCII: (American Standard Code for Information Interchange, se pronuncia “asqui”) Es una codificación usada para traducir las letras del alfabeto, los dígitos del 0 al 9, los signos de puntuación y otros símbolos especiales, a secuencias de unos y ceros, por lo que se dice que éste es un código “alfanumérico”. Éste no utiliza una regla o norma específica para la correspondencia entre un carácter y un número binario sino una convención aceptada internacionalmente, la cual se muestra en la próxima página. Observe que, según este código:

A 6510 4116 10000012 Así, se puede ver que cada caracter queda representado por un byte de 8 bits. Originalmente, el código ASCII usaba bytes de 7 bits, por lo que sólo abarcaba los primeros 128 caracteres de la tabla actual, de los cuales los primeros 32 correspondían a los caracteres de control de los dispositivos de impresión. Posteriormente se le añadieron otros 127 para satisfacer las necesidades de manipulación de caracteres con puntuación especial, así como también caracteres usados en distintos países y caracteres de dibujo simple. Estos últimos han sido de gran utilidad para su uso en sistemas operativos de tipo cónsola que no tienen altas capacidades gráficas –caracteres 176-223–. Si bien existen otros códigos con el mismo propósito que el ASCII, éste se ha mantenido como el estándar para la industria de la informática, aún cuando la longitud de la tabla no resulta adecuada para los lenguajes orientales –japonés, chino, etc.– cuyos juegos de caracteres abarcan un número superior a 3000. Código ANSI: (American National Standards Institute) Es una variedad del código ASCII nacida para su utilización en sistemas operativos de interfaz gráfica –como Windows®, Unix® y Linux®–, por lo que no necesita caracteres especiales para formar elementos de dibujo. Existe una gran cantidad de variaciones menores debido a la existencia de diversos juegos de caracteres y tipos de letras –fonts–. En las próximas páginas se muestra la versión estándar de la misma, la cual puede ser vista también a través del mapa de caracteres de Windows® para la mayoría de los tipos de letra. Código Unicode: Es una ampliación de los códigos ASCII y ANSI que responde a la necesidad de contar con un código que represente los caracteres de la mayoría de los lenguajes del planeta, incluyendo los caracteres asiáticos, los símbolos matemáticos y las letras griegas, por mencionar sólo algunos. Éste utiliza bytes de 16 bits, por lo que puede representar hasta 65535 símbolos pero, hasta la fecha, no está disponible para todos los sistemas operativos –como MS-DOS®– debido a que éstos no están capacitados para manipular tal número de caracteres. Se puede ver a través del mapa de caracteres en algunos tipos de letras –como Arial Unicode – que vienen con las últimas versiones de Windows®.

Page 5: 1 Matematica Digital

Cap.1: Principios Digitales Pag. 1-5

Programación con Delphi Ing. José Ricardo Vargas

Tabla 1-4 Caracteres del Código ASCII, codificación decimal, hexadecimal y binaria

0 1 2 3 4 5 6 7 8 9 A B C D E F

SP 0 @ P ` p Ç É á α ≡ 0 0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240

0000

! 1 A Q a q ü æ í β 6 1 1 17 33 49 65 81 97 113 129 145 161 177 193 209 225 241

0001

" 2 B R b r é Æ ó Γ ≥ 2 2 18 34 50 66 82 98 114 130 146 162 178 194 210 226 242

0010

♥ !! # 3 C S c s â ô ú π ≤ 3 3 19 35 51 67 83 99 115 131 147 163 179 195 211 227 243

0011

♦ ¶ $ 4 D T d t ä ö ñ Σ ⌠ 4 4 20 36 52 68 84 100 116 132 148 164 180 196 212 228 244

0100

♣ § % 5 E U e u à ò Ñ σ ⌡ 5 5 21 37 53 69 85 101 117 133 149 165 181 197 213 229 245

0101

♠ ¯ & 6 F V f v å – ª μ ÷ 6 6 22 38 54 70 86 102 118 134 150 166 182 198 214 230 246

0110

BEEP ' 7 G W g w ç — ° τ ≈ 7 7 23 39 55 71 87 103 119 135 151 167 183 199 215 231 247

0111

BKS ↑ ( 8 H X h x ê ÿ ¿ Φ ˚ 8 8 24 40 56 72 88 104 120 136 152 168 184 200 216 232 248

1000

↓ ) 9 I Y i y ë Ö Θ • 9 9 25 41 57 73 89 105 121 137 153 169 185 201 217 233 249

1001

LF → * : J Z j z è Ü ¬ Ω · A 10 26 42 58 74 90 106 122 138 154 170 186 202 218 234 250

1010

← + ; K [ k ï ¢ ½ δ √ B 11 27 43 59 75 91 107 123 139 155 171 187 203 219 235 251

1011

´ < L \ l | î £ ¼ ∞ ⁿ C 12 28 44 60 76 92 108 124 140 156 172 188 204 220 236 252

1100

CR ↔ - = M ] m ì ¥ ¡ ø ² D 13 29 45 61 77 93 109 125 141 157 173 189 205 221 237 253

1101

. > N ^ n ~ Ä ₧ « ε E 14 30 46 62 78 94 110 126 142 158 174 190 206 222 238 254

1110

/ ? O _ o Å ƒ » ∩ SP F 15 31 47 63 79 95 111 127 143 159 175 191 207 223 239 255

1111

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

NOTAS: BEEP (07) = Sonido del Altavoz BKS (08) = BACKSPACE = Mover el cursor un espacio atrás y borrar. LF (10) = LINE FEED = Mover el cursor a la línea siguiente. CR (13) = CARRIAGE RETURN = LF + colocar el cursor al principio de la línea. SP (32) = SPACE = Espacio en blanco. Los caracteres del área sombreada varían según el dispositivo de impresión. Los caracteres entre el 128 y el 255 varían según algunos países de aplicación.

Page 6: 1 Matematica Digital

Pag. 1-6 Cap.1 : Principios Digitales

Programación con Delphi Ing. José Ricardo Vargas

Tabla 1-5 Caracteres del Código ANSI, codificación decimal, hexadecimal y binaria

0 1 2 3 4 5 6 7 8 9 A B C D E F

SP 0 @ P ` p € ° À Ð à ð 0 0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240

0000

! 1 A Q a q ‘ ¡ ± Á Ñ á ñ 1 1 17 33 49 65 81 97 113 129 145 161 177 193 209 225 241

0001

" 2 B R b r ‘ ’ ¢ ² Â Ò â ò 2 2 18 34 50 66 82 98 114 130 146 162 178 194 210 226 242

0010

# 3 C S c s ƒ “ £ ³ Ã Ó ã ó 3 3 19 35 51 67 83 99 115 131 147 163 179 195 211 227 243

0011

$ 4 D T d t „ ” ¤ ´ Ä Ô ä ô 4 4 20 36 52 68 84 100 116 132 148 164 180 196 212 228 244

0100

% 5 E U e u … • ¥ µ Å Õ å õ 5 5 21 37 53 69 85 101 117 133 149 165 181 197 213 229 245

0101

& 6 F V f v † – ¦ ¶ Æ Ö æ ö 6 6 22 38 54 70 86 102 118 134 150 166 182 198 214 230 246

0110

' 7 G W g w ‡ — § · Ç × ç ÷ 7 7 23 39 55 71 87 103 119 135 151 167 183 199 215 231 247

0111

BKS ( 8 H X h x ˆ ˜ ¨ ¸ È Ø è ø 8 8 24 40 56 72 88 104 120 136 152 168 184 200 216 232 248

1000

) 9 I Y i y ‰ ™ © ¹ É Ù é ù 9 9 25 41 57 73 89 105 121 137 153 169 185 201 217 233 249

1001

LF * : J Z j z Š š ª º Ê Ú ê ú A 10 26 42 58 74 90 106 122 138 154 170 186 202 218 234 250

1010

+ ; K [ k ‹ › « » Ë Û ë û B 11 27 43 59 75 91 107 123 139 155 171 187 203 219 235 251

1011

´ < L \ l | Œ œ ¬ ¼ Ì Ü ì ü C 12 28 44 60 76 92 108 124 140 156 172 188 204 220 236 252

1100

CR - = M ] m - ½ Í Ý í ý D 13 29 45 61 77 93 109 125 141 157 173 189 205 221 237 253

1101

. > N ^ n ~ Ž ž ® ¾ Î Þ î þ E 14 30 46 62 78 94 110 126 142 158 174 190 206 222 238 254

1110

/ ? O _ o Ÿ ¯ ¿ Ï ß ï ÿ F 15 31 47 63 79 95 111 127 143 159 175 191 207 223 239 255

1111

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

NOTAS BKS (08) = BACKSPACE = Mover el cursor un espacio atrás y borrar. LF (10) = LINE FEED = Mover el cursor a la línea siguiente. CR (13) = CARRIAGE RETURN = LF + colocar el cursor al principio de la línea. SP (32) = SPACE = Espacio en blanco. = Caracter variable: depende del tipo de letra. Los códigos del área sombreada corresponden a valores de control no visibles. Los caracteres entre el 128 y el 255 varían según el tipo de letra y el juego de caracteres del sistema operativo.

Page 7: 1 Matematica Digital

Cap.1: Principios Digitales Pag. 1-7

Programación con Delphi Ing. José Ricardo Vargas

1.8 Aritmética binaria

Realizar operaciones aritméticas en un sistema de numeración distinto al decimal resulta difícil debido a la ausencia de experiencia en el manejo de las operaciones. Sin embargo, el sistema binario presenta una facilidad basada en lo sencillo que es aprender estas operaciones básicas como sumar y multiplicar, así como otras que resultan de fácil implementación en circuitos digitales binarios. En la siguiente figura se muestran las tablas de sumar, restar, multiplicar y dividir números binarios.

+ 0 1 - 0 1 × 0 1 ÷ 1

0 0 1 0 0 1P 0 0 0 0 0

1 1 10 1 1 0 1 0 1 1 1

Figura 1-1 Operaciones aritméticas binarias

En esta figura, 1P en la tabla de restar significa “1 más un préstamo del dígito siguiente”, tal como se hace en la resta decimal cuando un dígito del sustraendo es mayor que el correspondiente dígito del minuendo. Observe también la ausencia de la columna del cero en la tabla de dividir, debido a que en binario, así como en cualquier base, la división por cero no está definida. El manejo de estas operaciones cuando los números son mayores a los que aparecen en las tablas, es igual que en aritmética decimal: Suma: 1 1 1 acarreos

125 1111101 +80 +1010000 205 11001101 Resta: 1 1 préstamos

125 1111101 -82 -1010010 43 0101011

Multiplicación: 13 1101 x11 x1011 143 1101 1101 1101 . 10001111

División: 81 3 1010001 11 6 27 11 11011 21 100 21 11 0 100 11 11 11 0

Existen además otras dos operaciones que involucran la manipulación de bits y que se han implementado en algunos lenguajes de programación, entre ellos Pascal, aún cuando no entran en la categoría de aritméticas. Se denominan operaciones de desplazamiento y son shl –abreviatura de shift left– y shr –abreviatura de shift right– y su función consiste en mover bits hacia la izquierda –shl– o hacia la derecha –shr– en un byte dado. Así:

Desplazamiento hacia la izquierda –shl–:

Byte original 1 0 1 1 0 1 1 1

Bit que se agrega

Byte shl 1 1 0 1 1 0 1 1 1 0 Desplazamiento hacia la derecha –shr–:

Byte original 1 0 1 1 0 1 1 1 Bit que se pierde

Byte shr 1 0 1 0 1 1 0 1 1

↵ Bit que se agrega

En ambos casos, el número que sigue al operador de desplazamiento, indica el número de lugares que han de desplazarse los bits. Así, 10012 shl 2 = 1001002 y 10012 shr 2 = 102.

1.9 Almacenamiento de números naturales

Físicamente, la memoria del computador sólo almacena ceros y unos –la razón para usar el sistema binario–. De hecho, se puede imaginar ésta como una enorme colección de casillas que almacenan sólo ceros y unos, de un modo parecido a como se muestra a continuación:

···· 1 0 1 0 0 1 1 1 ···· ···· 0 0 1 1 0 1 0 0 ···· ···· 1 1 1 0 0 0 1 0 ····

Ahora bien, cuando un programa necesita almacenar un valor en la memoria, éste programa usa sólo una pequeña porción de esta memoria; de hecho, y esto es válido para la mayoría de los lenguajes de programación, los programas deben reservar una cantidad específica de estas casillas para cada valor, además deben identificar a ese grupo de casillas y, por último, deben –de algún modo– saber qué clase de dato se almacena: numérico, alfanumérico u otro.

A PROPÓSITO Dado que cada casilla de la memoria almacena sólo un bit, se ha convenido en denominar a las casillas también bits.

Los números naturales pueden ser almacenados directamente en su representación binaria. Por ejemplo, el número 15410 se almacena como 100110102, por lo que ocupa 8 bits. Luego, si un programa necesita almacenar este número, puede reservar un byte de 8 bits reservando

Page 8: 1 Matematica Digital

Pag. 1-8 Cap.1 : Principios Digitales

Programación con Delphi Ing. José Ricardo Vargas

8 casillas consecutivas de la memoria. Pero un byte de 8 bits tiene una capacidad limitada de almacenamiento: está limitado a almacenar valores desde el 000000002 (=010) hasta el 111111112 (=25510) y todos los números intermedios entre ellos, es decir: 0 0 0 0 0 0 0 0 0 154 1 0 0 1 1 0 1 0 255 1 1 1 1 1 1 1 1

Entonces ¿qué sucede si se necesita almacenar un número natural mayor que 255 y se pretende utilizar el byte anterior? Pues no se puede, ya que un número mayor que 255 tendrá una representación binaria con un número de bits superior a ocho; si se intenta llevar a cabo el almacenamiento de tal valor en este byte, se produce una condición llamada sobreflujo –overflow– y su efecto es generalmente perjudicial cuando éste se produce durante la ejecución de un programa. Para evitarlo, el programador debe prever, aunque sea a grosso modo, los valores máximos que alcancen los valores con el fin de reservar la cantidad de bits adecuada. En términos de lenguajes de programación, ello se realiza mediante el uso de tipos de datos con los que diferencian, no sólo aquellos de distinta naturaleza que los números naturales –como los caracteres– sino también aquellos con la necesidad de una cantidad mayor o menor de bits para su almacenamiento. Del ejemplo anterior puede deducirse que una variable de N bits tiene la capacidad de almacenar números naturales entre cero y 2N-1. Por otra parte, los lenguajes de programación ofrecen tipos de datos para el almacenamiento de números naturales o enteros, generalmente con un número de bits igual a ocho o a un múltiplo de 8, en cuyo caso sus capacidades son: para N = 8 (byte), cap. = 28-1 = 255 para N = 16 (word), cap. = 216-1 = 65.535 para N = 32 (doubleword), cap. = 232-1 = 4.294.967.295 A PROPÓSITO En un byte dado, algunos bits tienen una

denominación especial. Así, el bit de menor peso –el que está ubicado en el extremo derecho del byte– se denomina bit menos significativo o lsb por su denominación en inglés: least significant bit. Igualmente, el bit de mayor peso –el ubicado en el extremo izquierdo del byte– se denomina bit más significativo o msb por most significant bit, como se muestra:

1.10 Almacenamiento de caracteres

El almacenamiento de caracteres se lleva a cabo mediante el almacenamiento directo del número natural que corresponde al código del carácter, que en la mayoría de los casos se trata de los códigos ASCII y ANSI de 8 bits o el UNICODE de 16 bits. Así, según el código ASCII, la

letra ‘A’ se almacena como 01000001 y la ‘z’ como 01111010. Las cadenas de caracteres se almacenan como bytes consecutivos –uno para cada letra– que representan el código de cada una. La longitud de la cadena puede estar determinada por varias condiciones, como la presencia de un carácter especial que la indique o que indique su fin.

1.11 Almacenamiento de números negativos

El almacenamiento de números enteros –positivos o negativos– se puede llevar a cabo de varias maneras. Aquí se mencionarán cuatro: sesgado, signo-magnitud, complemento a uno y complemento a dos.

1.11.1 Sesgado

También conocido como Exceso, Polarización –y en inglés biased–, consiste en restar automáticamente una cantidad fija a la representación de un número positivo con el fin de que represente a uno negativo. Por ejemplo, suponga un byte destinado a almacenar números enteros empleando sesgado. Un byte almacena números positivos entre 0 y 255, pero si a cada uno de estos valores se le resta 127 –número denominado bias en inglés–, se tiene que este byte representará valores entre -127 y 128. Generalmente este sesgado es igual a la mitad de la capacidad máxima de almacenamiento del byte. Así, se pueden construir los siguientes rangos de almacenamiento: para N = 8 (byte): -127...128 para N = 16 (word): -32767...32768 para N = 32 (doubleword): -2.147.483.647... 2.147.483.648

1.11.2 Signo – Magnitud

Consiste en utilizar un bit –generalmente el msb– para representar el signo del número formado por el resto de los bits. Así:

∑−

=

+=1

0

2.n

i

iin bbN

donde bn es cero para números positivos y uno para números negativos y n es el número de bits. Así, por ejemplo: 100101012 = -2110 ya que msb=1 y 00101012 = 2110 Si se utilizan bytes de 8 y 16 bits con este método, se obtienen los siguientes rangos: para N=8 (1)11111112 = -12710 (0)11111112 = 12710 rango = -127..127 para N=16 (1)1111111111111112 = -3276710 (0)1111111111111112 = 3276710

msb lsb

Page 9: 1 Matematica Digital

Cap.1: Principios Digitales Pag. 1-9

Programación con Delphi Ing. José Ricardo Vargas

rango = -32767..32767 Observe que el bit de signo se ha encerrado en paréntesis. Esto sólo se ha hecho para indicarlo, pero no es habitual.

1.11.3 Complemento a uno

En este esquema los números positivos tienen una representación igual a los números naturales pero los negativos se forman mediante el cambio de ceros a unos y de unos a ceros del correspondiente positivo. Así, por ejemplo, el número -1310 quedaría almacenado como 111100102, ya que 1310 = 000011012. Por supuesto, y como se mencionó en 1.9, debe saberse qué clase de dato se almacena en un byte, a fin de interpretar correctamente su contenido. Por ejemplo, observe cómo se interpreta el byte 10011001 según los cuatro modos de almacenamiento vistos hasta ahora: − Número natural: 10011001 15310 = 128+16+8+1 − Sesgado: 10011001 2610, ya que 26 = 153 - 127 − Signo-magnitud: 10011001 -2510 ya que

000110012 = 2510 − Complemento a uno: 10011001 -10210 ya que

10011001 es el complemento a uno de 01100110 = 10210

La representación de complemento a uno facilita la resta de números binarios ya que ésta se lleva a cabo “sumando” al minuendo, el complemento a uno del sustraendo, con la especial precaución de que si se produce un overflow, los bits de este overflow se sumen al lsb de la diferencia. Por ejemplo: 117 01110101 01110101 -45 - 00101101 + 11010010 72 01001000 1 01000111 +1 01001000

donde 11010010 es el complemento a uno de 00101101 y 1 es el bit de overflow.

1.11.4 Complemento a dos

Se obtiene de sumar 1 al complemento a uno del número y se define como el número que sumado al original de N bits, produce 2N. Con esta representación se logra eliminar la suma del bit de overflow que puede resultar de la aplicación del método anterior. Por ejemplo, tomando los números del ejemplo anterior y de nuevo utilizando 8 bits, se tiene:

4510 = 001011012 Su complemento a 1 es: 11010010 Al sumarle 1 se tiene: 11010011, luego 117 01110101 - 45 + 11010011

72

=

01001000

Al igual que con el esquema anterior, la representación de complemento a dos proporciona un método para efectuar restas binarias con operaciones de sumas, pero en este caso se toma la precaución de desechar el bit de overflow que pudiera presentarse.

1.12 Almacenamiento de números reales

El almacenamiento de números reales plantea el desafío de almacenar, con una cantidad determinada y finita de bits, un conjunto infinito de números. Para enfrentar este problema se han propuesto algunos métodos de representación, habiéndose convenido en utilizar el esquema de punto flotante, el cual permite el almacenamiento de un vasto conjunto de números reales con la preservación de cifras significativas aun siendo estos mayores o menores que 1. Un sistema de punto flotante se caracteriza por cuatro parámetros: un número base –ß–, una cantidad de dígitos –p– y un rango de exponentes emin y emax. Así, cada número x en punto flotante tiene el valor

x = ± m × ße − El número m se denomina mantisa o significando y

está formado por los dígitos d1.d2 d3 .... dp donde cada di es un dígito que cumple con 0 ≤ di < ß.

− El número e es un entero que toma valores entre emin y emax.

Ejemplo 1-1 El conocido sistema de notación científica es un sistema de punto flotante que utiliza ß=10. Un número como 123.456 se puede expresar en este sistema como 1.23456 × 102 o como 0.123456 × 103 o como 0.0123456 × 104 Dado que un número real puede tener varias representaciones en un mismo sistema de punto flotante –por ejemplo, 3.14 puede ser representado como 3.14×100 o como 0.314×101–, generalmente, el exponente y la mantisa se ajustan para que se cumpla que d1 ≠ 0. A este ajuste se le conoce como normalización y su propósito es proporcionar una representación única de un mismo número real en un mismo sistema de punto flotante. Así, las únicas representaciones en notación científica normalizada de 3.14 y 123.456 serían 3.14×100 y 1.23456×102. Para almacenar números reales, los computadores utilizan esquemas de punto flotante en binario. Para ello forman bytes con estructuras similares a la siguiente:

s e M

donde: - s: un bit para el signo del número: 0 positivo, 1

negativo–. - e: exponente. Se almacena como un número entero

sesgado. - m: mantisa. Se almacena como un número binario

fraccionario. Puede estar normalizado.

Page 10: 1 Matematica Digital

Pag. 1-10 Cap.1 : Principios Digitales

Programación con Delphi Ing. José Ricardo Vargas

Ejemplo 1-2 Considere un sistema que utiliza ß=2, un byte de 1 bit para el signo, 7 para el exponente almacenado como número natural y 16 para la mantisa no normalizada, y que en un momento dado contiene la siguiente información:

0 1000011 1001010100001000 El primer bit –el msb– es cero, por lo que el número es positivo. los siguientes 7 bits representan al número 67 –ya que 67 = 1×20 + 1×21 + 1×26– pero, por ser un número entero sesgado, a éste se le resta 64, por lo que el exponente es 67-64=3. Los 16 bits restantes representan al número 1.164306640625, ya que:

127530 21

21

21

21

21

06251.16430664 ++++=

Entonces el número almacenado es:

1.164306640625 × 23 = 9.314453125

Cuando una mantisa binaria está normalizada, su bit mas significativo es siempre 1, por lo que no es necesario almacenarlo sino asumirlo, ganándose así un bit más para esta mantisa. A ese bit se lo conoce como bit escondido – hidden bit–. Es importante saber cuándo un sistema utiliza este mecanismo pues la interpretación de un byte resulta diferente.

Ejemplo 1-3 Considere el sistema y el byte del ejemplo anterior, pero asumiendo un bit escondido:

0 1000011 1001010100001000 El signo y el exponente son iguales pero la mantisa se interpreta como 1.1001010100001000 , cuyo valor decimal es:

1386410 21

21

21

21

21

21

031251.58215332 +++++=

Entonces el número almacenado es:

1.5821533203125 × 23 = 12.6572265625

Todos los parámetros mencionados para el almacenamiento de números en punto flotante –la base, el modo de representación de la mantisa y el exponente, el sesgado, el bit escondido, etc.– cambian según el sistema de computación. Actualmente, los procesadores están en capacidad de manipular varios conjuntos de punto flotante., incluso, un solo lenguaje de computación ofrece varios de estos conjuntos. Más adelante se verán los que ofrece Object Pascal y sus características.

La aritmética utilizada para operar números en punto flotante difiere de la utilizada para números enteros y es un poco más compleja, por lo que extenderse en ese tema escapa del alcance de este texto. Pero se puede señalar que los procesadores actuales vienen con dos conjuntos de instrucciones para las operaciones aritméticas: uno

para enteros y otro para números en punto flotante. Generalmente, al programador no le concierne esta diferencia excepto en casos muy específicos.

1.13 La Norma IEEE 754

Con el propósito de facilitar la portabilidad de programas entre distintos sistemas de computación y alentar el desarrollo de aplicaciones científicas, el IEEE –Institute of Electrics and Electronics Engineers– propuso un conjunto de normas para los formatos y las operaciones aritméticas de los números almacenados en el sistema binario tanto para números enteros como para números en punto flotante. Esta norma, llamada Norma IEEE 754, es aceptada actualmente en la industria y se adhieren a ella los fabricantes de procesadores como Intel y Motorola. La norma especifica además, los valores que significan algunas combinaciones especiales de bits y cómo se representan valores como el cero y el ∞.

En este estándar, algunas especificaciones de formato son:

− Los números enteros se almacenan en bytes de 16, 32 o 64 bits, y en representación de complemento a dos.

− Los números en punto flotante emplean base 2, un bit de signo, una zona de bits para exponente con sesgado y una zona de bits para la mantisa, almacenados como fracción binaria, normalizada o no.

− Las cadenas de caracteres se pueden tratar como secuencias contiguas de bytes, con longitudes de hasta 232–1 bytes.

La siguiente lista muestra un resumen de estos:

- Entero de dos bytes (integer): 15 0

Complemento a dos

- Entero corto (shortint): 31 0

Complemento a dos

- Entero de dos bytes (longint): 63 0

Complemento a dos

- Punto Flotante de precisión simple: 31 23 0

s Exp. Mantisa

- Punto Flotante de doble precisión : 63 51 0

S Exp. Mantisa

En las figuras anteriores, s es el bit de signo y Exp es el byte de exponente de punto flotante.

Los dos formatos de punto flotante mostrados no son los únicos que menciona la norma. Existen también otros

Page 11: 1 Matematica Digital

Cap.1: Principios Digitales Pag. 1-11

Programación con Delphi Ing. José Ricardo Vargas

dos, llamados “ampliados” que se interpretan como extensiones de los dos nombrados pero que no tienen longitudes en bits definidas pues permiten que los sistemas las establezcan según su conveniencia.

FORMATO

Parámetro Simple Simple ampliado Doble Doble

ampliadoLongitud (bits) 32 ≥43 64 ≥79

Exponente (bits) 8 ≥11 11 ≥15 Mantisa (bits) 23 ≥31 52 ≥63 Polarización 127 No esp. 1023 No esp.

Rango (base 10) 10638 No esp. 106308 No esp.

Tabla 1-6 Formatos ampliados IEEE 754

Dada una localidad de memoria destinada a almacenar una palabra en punto flotante, ésta puede contener algunas combinaciones de bits que pueden producir valores que no se pueden interpretar de las maneras habituales, tales como: − Cero negativo: un byte con todos los bits iguales a

cero, excepto el bit de signo que es igual a uno. Este valor no afecta la interpretación real del cero en expresiones aritméticas pero ocurre que en algunas ocasiones se imprime como -0.00.

− Mas o menos infinito: es un byte con todos los bits del exponente iguales a uno y los de la mantisa, iguales a cero. Indica problemas relacionados con overflow.

− NaN –del inglés Not a Number– : es un byte con todos los bits del exponente iguales a uno y los de la mantisa distinto de cero. Indica la intención de operaciones no válidas, variables sin inicializar y otros problemas relacionados con valores no numéricos.

− Número no normalizado: es un byte con todos los bits del exponente iguales a cero y una mantisa distinta de cero que no cumple con el requisito de normalización. Puede ser negativo o positivo. Indica problemas relacionados con overflow de exponentes y puede aparecer en expresiones aritméticas normales.

Ejemplo 1-4 Considere el formato simgle de la Norma IEEE. Los valores que éste puede representar son: 31 23 0

0 00000000 00000000000000000000000 0

1 00000000 00000000000000000000000 -0

0 11111111 00000000000000000000000 ∞

1 11111111 00000000000000000000000 -∞

x 11111111 ≠0 NaN

X 0<E<255 fb 62E-127(1.fb)

X 00000000 fb≠0 62E-126(0.fb) En estas figuras, fb significa fracción binaria, x significa 0 ó 1 y E significa exponente. El penúltimo valor es el de cualquier número real normal representado en punto flotante de simple precisión y el último representa un número no normalizado. Observe en este último caso, que la polarización es de 126. Observe también que a la fracción binaria del número real normal, se le agrega uno –el bit escondido–.

1.14 Lógica formal

En un contexto de lógica formal, se afirma que una oración es un predicado o una proposición si, entre otras cosas, posee un valor de certidumbre, que puede ser sólo Cierto o Falso. Partiendo de esta propiedad y sólo de esta, se pueden construir predicados más complejos uniendo predicados simples entre sí mediante operaciones lógicas, de igual modo al que se usa para construir expresiones algebraicas complejas combinando operandos mediante operadores aritméticos. El valor de certidumbre de dichos predicados depende naturalmente de las operaciones lógicas que se apliquen. Las tres operaciones lógicas elementales son: AND, OR y NOT y su funcionamiento se describe a continuación.

1.14.1 AND lógico

Es un operador binario en el sentido de que se aplica sobre dos operandos para formar un predicado compuesto cuyo valor de certidumbre es Cierto si y sólo si los dos predicados operandos tiene el valor Cierto. Sean A y B dos predicados cualesquiera, el valor de certidumbre de un predicado formado por estos dos puede mostrarse mediante una tabla de certidumbre o tabla de verdad, que muestra todas las combinaciones de certidumbre de los predicados originales y su efecto en el predicado compuesto:

A B A AND BF F F F C F C F F C C C

F se entiende por FALSO y C por CIERTO o verdadero. Ejemplo 1-5

Considere los siguientes predicados: P1, P2 y P3: P1 = “A es una letra” P2 = “100 es mayor que 50” P3 = “50 es mayor que 100” Sus valores de certidumbre son, evidentemente: P1=Cierto, P2=Cierto y P3=Falso. Luego, construir un predicado compuesto mediante el operador AND sería algo como: P1 AND P2 lo que equivaldría a decir

Page 12: 1 Matematica Digital

Pag. 1-12 Cap.1 : Principios Digitales

Programación con Delphi Ing. José Ricardo Vargas

A PROPÓSITO

“ A es una letra” y “100 es mayor que 50” cuyo valor de certidumbre es Cierto. Otro predicado compuesto podría ser P1 AND P3, que equivaldría a decir: “A es una letra” y “50 es mayor que 100” cuyo valor de certidumbre es, evidentemente, Falso, no sólo por que lo indique el sentido común sino porque así está indicado en la tabla de certidumbre de la operación AND. Observe, por cierto, que el operador “y” no forma parte de ninguno de los dos predicados. Cuando dos predicados se unen con un operador AND, se dice que forman una conjunción.

1.14.2 OR lógico

Es otro operador, igualmente binario, que permite la construcción de predicados compuestos cuyo valor de certidumbre es Cierto si cualquiera de los predicados operandos o todos tienen el valor Cierto. Es decir, si A y B son dos predicados, entonces:

A B A OR B F F F F C C C F C C C C

Observe en la tabla anterior que el operador OR produce un predicado de valor Falso sólo cuando todos los predicados son también de valor Falso, de lo contrario, producirá entonces predicados de valor Cierto. Dos predicados unidos mediante un operador OR, se dice que forman una disjunción.

1.14.3 NOT lógico

El operador NOT lógico no es un operador binario pues sólo se aplica a un operando y su efecto es simplemente el de cambiar el valor de certidumbre del operando: si es Cierto lo cambia a Falso y si es Falso, lo cambia a Cierto. Entonces, si A es un predicado cualquiera, se tiene:

A NOT A F C C F

1.15 Lógica digital

Los conceptos explorados en los párrafos anteriores pueden ser aplicados también a números si se aplican a la representación binaria de éstos, asociando el valor Cierto con el número 1 y Falso con 0. En estas condiciones, pueden aplicarse los operadores lógicos a valores numéricos sabiendo que la operación se aplica a cada uno de los bits correspondientes de la representación binaria de los números. Las operaciones lógicas aplicadas a ceros y unos pueden resumirse así:

A B NOT A A AND B A OR B 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 1 1 0 1 1

Ejemplo 1-6

Para comprender por qué 42 AND 54 = 34 se debe entonces recurrir a la representación binaria de la operación:

42 = 1 0 1 0 1 0 54 = 1 1 0 1 1 0 34 = 1 0 0 0 1 0

Observe que sólo en las columnas sombreadas se produce un 1 como resultado de la operación AND aplicado a los bits correspondientes en ambos números. De igual manera se puede verificar que 42 OR 50 = 58

42 = 1 0 1 0 1 0 50 = 1 1 0 0 1 0 58 = 1 1 1 0 1 0

Las operaciones lógicas AND y OR

pueden ser representadas por circuitos eléctricos si se asocia el resultado de la operación al encendido de un bombillo conectado a una fuente de poder y a una distribución de interruptores, de manera que 1 encendido y 0 apagado. Así:

El bombillo se enciende si A y B están conectados, es decir:

1 = A AND B

El bombillo se enciende si se conecta A o B o ambos, es decir:

1 = A OR B

Preguntas de repaso

1. ¿Qué es un sistema de numeración? ¿Cómo se forma?

2. ¿Qué papel juega la base de un sistema de numeración?

3. ¿En qué consiste la representación posicional de un sistema de numeración? ¿Conoce ud. algún sistema de numeración que no sea posicional?

4. ¿Puede la base de un sistema de numeración ser uno de los dígitos del mismo?

5. ¿Puede un sistema de numeración tener cualquier base? ¿Qué restricciones se aplican a la selección de la base?

A

B

A B

Page 13: 1 Matematica Digital

Cap.1: Principios Digitales Pag. 1-13

Programación con Delphi Ing. José Ricardo Vargas

6. ¿Qué ventaja cree usted que tiene el sistema de numeración de base 12 sobre el sistema decimal?

7. ¿Cuáles son los sistemas de numeración más utilizados? ¿Por qué son precisamente esos los que más se utilizan?

8. ¿Qué es el sistema binario? ¿Cuál es su base? ¿De cuántos dígitos está formado?

9. ¿Cómo se escriben números fraccionarios en el sistema binario? ¿Y números negativos?

10. ¿Qué es el sistema octal? ¿Cuál es su base? ¿De cuántos dígitos está formado?

11. ¿Qué es el sistema hexadecimal? ¿Cuál es su base? ¿De cuántos dígitos está formado? ¿Qué valor tienen los símbolos A, B, C, D, E y F?

12. Observe la Tabla 2-2. ¿Cuántos bits cree ud. que son necesarios para representar un número decimal cualquiera?

13. ¿Cómo se convierten números de cualquier base a decimal? ¿Debe separarse la conversión para la parte fraccionaria de los números? ¿En qué base se efectúan las operaciones?

14. ¿Cómo se convierten números de decimal a cualquier base? ¿Debe separarse la conversión para la parte fraccionaria de los números?

15. Describa un algoritmo para convertir números entre los sistemas binario, octal y decimal.

16. ¿Es posible convertir números de un sistema cualquiera, distinto al decimal, en otro cualquiera, también distinto al decimal? ¿Qué restricciones se aplican a las operaciones involucradas?

17. ¿Qué es el código BCD? ¿En qué se diferencia del sistema de numeración binario?

18. ¿Qué es el código ASCII? ¿Cómo se conoce el código ASCII de una letra?

19. ¿Es igual el código ASCII de un dígito a la representación binaria del mismo?

20. ¿Qué son los códigos ANSI y Unicode? ¿Dónde se encuentran generalmente? ¿Cuántos caracteres representan cada uno?

21. Resuma las tablas de sumar, restar, multiplicar y dividir en binario.

22. ¿Qué hacen las operaciones shl y shr? ¿Qué sucede con los bits que se pierden? ¿Es siempre cero el bit que se agrega?

23. ¿Cuál esquema se usa para almacenar números naturales? ¿Qué sucede si se sobrepasa la capacidad de almacenamiento de una variable?

24. ¿Cuál esquema se usa para almacenar caracteres? ¿Y para almacenar una cadena de caracteres?

25. ¿Cuáles son los tres esquemas de almacenamiento de números enteros? Enumere las características de cada uno de ellos.

26. ¿Cómo se calcula el complemento a uno de un número binario? ¿Cómo se lleva a cabo la resta binaria usando esta representación?

27. ¿Cómo se calcula el complemento a dos de un número binario? ¿Cómo se lleva a cabo la resta binaria usando esta representación? ¿En qué se diferencia del método que usa complemento a uno?

28. ¿Cómo se forma un sistema de representación de punto flotante? ¿De qué partes se compone un número en esta representación?

29. ¿Qué representa la mantisa de un número en punto flotante? ¿Con cuáles esquemas puede estar representada?

30. ¿Qué representa el exponente de un número en punto flotante? ¿Con cuáles esquemas puede estar representado?

31. ¿En qué consiste la normalización de un sistema de punto flotante? ¿Qué finalidad tiene? ¿Qué restricciones cree ud. que añade la normalización a un sistema de punto flotante?

32. ¿En qué consiste la polarización del exponente de un sistema de punto flotante? ¿Qué beneficio trae al sistema? ¿Cree ud. que el monto de la polarización e siempre el mismo?

33. ¿Qué es el estándar IEEE-754? ¿A qué se aplica? 34. Resuma las características de los sistemas de

almacenamiento señalados en la norma IEEE-754. 35. ¿Qué son los formatos ampliados de la norma IEEE-

754? ¿A qué tipo de sistema de representación numérica se aplica?

36. ¿Cómo se representan, según la norma IEEE-754, los valores cero e infinito?

37. ¿Qué es un NaN? ¿Con cuáles operaciones se asocia?

38. ¿Qué es una proposición? ¿Qué es un valor de certidumbre?

39. ¿Cuáles son las tres principales operaciones lógicas? ¿Con qué tipo de operandos se aplican? ¿Cuál es el efecto de cada una de ellas?

40. ¿Cuál es el efecto de las operaciones lógicas cuando se aplican a números?

Problemas propuestos

1. Escriba en notación ampliada los siguientes números: 986510 16356 211213 10001012 76.02410 235.18 110.012 -2.4527

2. Convierta los siguientes números binarios en sus equivalentes decimales: 11 101 11011 1000 101010 -10.001 1111111 0.1111 101.111 -1.001001

Page 14: 1 Matematica Digital

Pag. 1-14 Cap.1 : Principios Digitales

Programación con Delphi Ing. José Ricardo Vargas

3. Convierta los siguientes números octales en sus equivalentes decimales: 11 37 152 1050 77766 10.001 0.01235 -123.456 101.111 -56.4312

4. Convierta los siguientes números hexadecimales en sus equivalentes decimales: 11 101 ABC 1A2B FFFF 10.ABC 100.AB FAE.2C 1D9.713 0.001DF

5. Convierta los siguientes números decimales en sus equivalentes hexadecimales: 15 116 9375 1070 101010 16.0901 9734.12 0.1234 101.999 21.00051

6. Convierta los siguientes números decimales en sus equivalentes octales: 765 9372 281 884 9971 1070 12.34 0.9876 508.1 100.92

7. Convierta los siguientes números decimales en sus equivalentes binarios: 15 116 9375 1070 101010 1070 12.34 0.9876 508.1 100.92

8. Convierta los siguientes números binarios en sus equivalentes octales y hexadecimales: 11 101 11011 1000 101010 10.001 1111111 0.1111 101.111 1.001001

9. Convierta los siguientes números decimales en sus equivalentes BCD: 15 116 9375 1070 101010 1070 12.34 0.9876 508.1 100.92

10. Convertir 0.3910 a binario. 11. Convertir 0.1010 a binario. ¿Cuántos bits son

necesarios para obtener una representación perfecta? 12. Efectúe las siguientes sumas en binario:

254+198 1003+549 15+116 1070+2345+32 13. Efectúe las siguientes restas en binario:

254-198 1003-549 116-19 2345-1070 14. Efectúe las siguientes multiplicaciones en binario:

25432 100335 16319 234536 15. En un byte de 8 bits almacene la representación

binaria del número 0.1010. Luego, y utilizando aritmética binaria, multiplique este número por 1010. Explique el resultado.

16. Construya las tablas de sumar y restar en base 16. 17. Sea X una variable que almacena el numero natural

45. ¿Cuál es el valor de las operaciones X shr 2 y X shl 3?

18. Desarrolle una expresión para determinar la cantidad de bits que tendrá un número decimal de n dígitos convertido en binario.

19. Dado un número decimal entero de N dígitos, cuántos dígitos son necesarios para expresar el mismo número en base 8, 12 y 16?

20. Demostrar que la operación número shl 1, aplicada a un número natural N veces, equivale a multiplicar dicho número por 2N y que la operación número shr 1, aplicada a un número natural N veces, equivale a dividir dicho número por 2N.

21. Demostrar que en un byte de N bits, X shr N = 0 22. Desarrolle un procedimiento para transformar un

número fraccionario expresado en base decimal a su representación en binario. Evalúe las posibilidades y decida cuál puede ser una solución cuando el número no tenga una representación binaria finita.

23. Encuentre una expresión en base decimal para modificar el valor de un bit individual de un número cualquiera expresado también en decimal.

24. Un programa de control dispone de una sola variable –un byte de 8 bits– para almacenar el estado de 6 interruptores simples, por lo que utilizará la representación binaria de un número para ello. ¿Cómo se puede modificar cada uno de los primeros 6 bits mediante operaciones en sistema decimal?

25. ¿Qué representa el siguiente valor: 0010101101011011000101001101000 si es uno o varios a) números naturales de 8 bits, b) números enteros con signo, en complemento a uno o en complemento a dos, de ocho bits c) caracteres, d) números de tipo single IEEE?

26. Desarrolle una expresión numérica que transforme una letra minúscula del código ASCII en su equivalente mayúscula.

27. Exprese las siguientes constantes como números de tipo single de la norma IEEE:

π: 3,14159 26535 89793 23846 2643...

e: 2,71828 18284 59045 23536 0287...

γ: 0,57721 56649 01532 86060 6512...

28. Considere un sistema de punto flotante con las siguientes características: β=2, 1 bit de signo, tres bits de exponente con polarización y cuatro bits de mantisa normalizada. ¿Cuántos y cuáles son los números reales que pueden ser representados con este sistema?

29. Efectúe las siguientes operaciones binarias:

254 AND 198 1003 OR 549 116 AND 19

30. Desarrolle una expresión que, dados la base, el número de dígitos y el rango de exponente de un sistema de punto flotante, indique cuántos números reales se pueden representar en ese sistema. Considere que no hay normalización en el mismo.

31. Repita el ejercicio anterior considerando que hay normalización en el sistema.

Page 15: 1 Matematica Digital

Cap.1: Principios Digitales Pag. 1-15

Programación con Delphi Ing. José Ricardo Vargas

32. Complete los ejercicios anteriores con una expresión que indique la cantidad de bits necesarios para construir un byte que represente números reales en ése sistema. Considere los mismos argumentos de las anteriores.