me
Matemticas para
programadores
Sistemas de numeracin
aritmtica binaria
www.FreeLibros.me
INFORMATICA PERSONAL-PROFESIONAL
Ttulo de la obra original:
MICROCOMPUTER MATH
Traduccin: Fernando Garca
Diseo de coleccin: Antonio Lax
Diseo de cubierta: Narcs Fernndez
Copyright
1982 by Howard W. Sams
Indianapolis, IN 46268
Co., Inc.
www.FreeLibros.me
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
www.FreeLibros.me
6. Multiplicacin y divisin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
Zelda aprende cmo desplazar por s misma. Algoritmos de multiplicacin. Algoritmos de divisin. Ejercicios.
7.
Mltiple precisin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
87
97
9. Transformaciones ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
109
Big Ed y el inventor. Cdigos ASCII. Paso de ASCII a enteros binarios. Paso de ASCII a fracciones binarias. Paso de enteros binarios a
ASCII. Paso de fracciones binarias a ASCII. Ejercicios.
10.
121
Apndices
A) Respuestas a los ejercicios
B) Conversiones binario,
decimal y hexadecimal
C) Tabla de conversin de nmeros en
a dos
Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
alfabtico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
www.FreeLibros.me
135
139
147
149
157
Introduccin
www.FreeLibros.me
La lista puede utilizarse para pasar de un tipo de sistema a otro. Por ltimo,
el apndice C contiene una lista de los nmeros en complemento a dos del
1 al 128, una referencia que no se encuentra habitualmente en otros
textos; a continuacin, se incluye un glosario de trminos.
WILLIAM BARDEN, JR.
www.FreeLibros.me
El sistema
binario: donde
empieza todo
En el sistema binario, todos los nmeros se representan por una condicin
Veamos un ejemplo rpido de binario en trminos fcilmente comprensibles.
......
Olive
Trudy
Thelma
0
1
2
3
Nmero
Fern.
Fran.
Selma.
Sidney.
4
6
7
ll
www.FreeLibros.me
Cuando Big Ed rellen por primera vez el panel de llamadas, tena ocho
luces, una para cada persona del servicio, como puede verse en la figura 1.1.
Un da, sin embargo, Bob Borrow, ingeniero de diseo de una compaa
de microprocesadores conocida como
llam a Ed.
Ed, podras ser mucho ms eficiente con tu panel de llamadas,
Puedo mostrarte cmo hemos diseado el tabln con uno de nuestros
microprocesadores.
PANEL DE LLAMADAS
7
Figura 1.1.
4
o
3
o
ACME
2
1
o
0
o
Figura 1.2.
Ed? Este panel es muy eficaz. Emplea cinco luces menos que tu
primer panel. Hay ocho combinaciones diferentes de luces. En realidad les
llamamos permutaciones, pues hay un orden definido en la disposicin de las
luces. He preparado una tabla de las permutaciones de las luces y la persona
del servicio llamada. Dio a Ed la tabla mostrada en la figura 1.3.
Slo hay ocho permutaciones diferentes de luces, Ed, ni ms ni menos.
Estas luces estn ordenadas en forma binaria. Utilizamos el sistema binario
en nuestros ordenadores por dos razones: primero, se ahorra espacio.
12
www.FreeLibros.me
0
0
0
0
0
0
ZELDA
OLIVE
TRUDY
THELMA
FERN
FRAN
SE LMA
SIDNEY
0
0
0
0
0
1
2
3
4
5
6
7
Dar estos cdigos a mis ayudantes para que los memoricen, dijo Ed.
Cada persona del servicio slo tiene que memorizar su cdigo, Ed.
Te dar la clave, de forma que puedas descifrar qu persona del servicio es
llamada, sin necesidad de la tabla.
Cada luz representa una potencia de dos. La luz de la derecha
representa dos elevado a cero. La siguiente, dos elevado a uno, y la de ms
a la izquierda es dos elevado a dos. En realidad es muy parecido al sistema
decimal, donde cada dgito representa una potencia de diez. Garabate
un ejemplo en el mantel, como muestra la figura 1.4.
5
7 0
375
1
-1
x
x
=
=
1
0
4
5
www.FreeLibros.me
tres luces en binario a su equivalente en decimal, habra que sumar la potencia de dos correspondiente a cada luz encendida. Garabate otra figura
en el mantel (Fig. 1.5).
con un peso de 4
Dgito
con un peso de 2
Dgito
Dgito
con un peso de 1
1 0 -0 x
1 x 2
1 x
6
NUMERO
DECIMAL
EQUIVALENTE
Figura 1.5.
www.FreeLibros.me
POSICIONES DE 8
POSICIONES DE 16 BITS
Figura 1.6.
Representacin de 8 y 16 bits
PESO
POSICION
DEL BIT
0
1
2
3
4
5
8
64
128
256
512
1024
2048
4096
8192
16384
32768
8
9
10
l l
12
13
14
15
65535
Figura 1.7.
15
www.FreeLibros.me
DEL BIT
- - 7
Figura 1.8.
En todos los microordenadores actuales, un grupo de ocho bits se denomina un byte. De alguna manera, es obvio el origen de esta palabra si nos
imaginamos a los primeros ingenieros informticos comiendo en el equivalente de Big Eds
La memoria de un microordenador viene a menudo indicada por el
nmero de bytes de que consta.
Cada byte corresponde aproximadamente a un carcter, como veremos
en captulos posteriores. Las operaciones de entrada y salida de la memoria se hacen generalmente de un byte cada vez.
N. del T.: Se trata de un juego de palabras entre
(morder), byte y bit, que,
adems de dgito binario, en ingls significa mordisco.
N. del
Contina con el mismo juego de palabras relativo a byte.
16
www.FreeLibros.me
Los registros en el interior de un microprocesador tienen tambin la extensin de uno o dos bytes. Estos, en realidad, no son ms que posiciones
de memoria de acceso rpido que se utilizan para almacenamiento temporal
en el microprocesador. Normalmente hay diez bytes de registros en los
microprocesadores y hasta 65,535 bytes en la memoria de un
denador, como ilustran las figuras 1.9 y 1.10.
REGISTROS
1
B
E
F
A
C
D
E
H
L
IX
EN CPU
PC
MEMORIA
POSICION 0
1
ROM Y RAM
65,534
65,535
UN BYTE
Figura 1.9.
17
www.FreeLibros.me
REGISTROS
EN CPU
U
- - -
DP
CC
MEMORIA
POSICION 0
1
ROM Y RAM
65,534
65,535
UN BYTE
Figura 1.10.
18
www.FreeLibros.me
Si est interesado en el
ensamblador de su microordenador.
tendr que operar con bytes para realizar operaciones aritmticas, como
suma y resta, y de uno a cuatro bytes para representar el lenguaje mquina
correspondiente a la instruccin del microprocesador.
Ya que nos referiremos continuamente a valores de uno y dos bytes,
vamos a investigar sobre ellos ms a fondo.
1 0 1 0 0 1 0 1 1 1 0 1
1x2'
=
=
=
1 x 2" =
1
4
8
16
6 4
512
2048
2653
Figura 1.11.
www.FreeLibros.me
sirve para diecisis o ms bits. Doblar y sumar es un procedimiento estrictamente mecnico, que automatiza el proceso de conversin. Es ms difcil
describirlo que hacerlo. Para utilizarlo, haga lo siguiente:
1.
2.
3.
4.
x 2
2
= 4
7
2 =
10
+o
2 0 x 2 = 40
8 2 X 2 = 164
165 X 2 =
330
X 2 = 662
6 6 3
663
X 2
= 1326
X 2
= 2652
2653
0000101001011101
Figura 1.12.
20
www.FreeLibros.me
www.FreeLibros.me
250
2 5 6
0
250
122
1 2 8
1
122
58
58
26
26
10
10
2
2
0
2
0
0
0
Figura 1.13.
www.FreeLibros.me
151 2
Figura 1.14.
0 --RESIDUO FINAL
Ejercicios
1.
2.
Hacer una lista de los equivalentes binarios de los nmeros decimales 20 a 32.
Pasar los siguientes nmeros
a sus equivalentes decimales: 00110101;
00010000; 01010101; ll 110000; 0011011101101001.
3. Pasar los siguientes nmeros decimales a su forma binaria: 15, 26, 52, 105,
255, 60000.
4. Rellenar a ceros los siguientes nmeros binarios hasta ocho bits: 101; 110101;
010101.
5.
es el mayor nmero decimal que puede ser almacenado en cuatro bits?
en seis bits?
en ocho?
en diecisis? Si n es el nmero de bits,
regla general se puede establecer sobre el mayor nmero que se puede
almacenar en n bits? (La respuesta Unos nmeros enormes, no se considera
aceptable.)
23
www.FreeLibros.me
hexadecimal
otras bases
numricas
Los sistemas hexadecimal y
son variantes de los nmeros binarios.
Se utilizan normalmente en sistemas de microordenadores, especialmente el
hexadecimal. Los datos pueden especificarse en notacin hexadecimal, tanto
en BASIC como en lenguaje ensamblador, en muchos microordenadores.
Trataremos los sistemas
y hexadecimal en este captulo junto a otros
sistemas numricos interesantes. Hagamos otra visita a Big Ed.
Probablemente nunca has odo hablar de ello; es una estrella pequea... ehm... un lugar. Estas manos, por cierto, son las que me trajeron al
Valle del Silicio. Vuestros ltimos microprocesadores son para mi gente
algo natural.
gustara or algo sobre ello?
Ed asinti.
Vers, nosotros somos los Hackers
y basamos todo en las potencias
de diecisis. Mir a Big Ed para ver si haba cogido la idea. Cuando
nuestra civilizacin se desarrollaba al principio, contbamos con nuestras
manos. Encontrbamos muy fcil contar vuestro valor diecisis utilizando
simplemente nuestros dedos. Posteriormente, necesitamos expresar nmeros
mayores. Hace muchos eones, uno de nosotros descubri la notacin
Como tenemos diecisis dedos, nuestros
utilizan una base de
diecisis, del mismo modo que los vuestros emplean una de diez. Cada
dgito representa una potencia de diecisis: 1, 16, 256, 4096, etc.
funciona exactamente
dijo Big Ed, mirando ansiosamente el
mantel limpio que haba puesto haca algunos das.
He aqu un nmero tpico, dijo el visitante, garabateando repentinamente en el mantel. Nuestro nmero
representa:
A x
+5x
+Bx
+1x
Pero,
son las
y las Bes?, pregunt Big Ed.
Ah, me olvidaba. Cuando contamos con nuestros dedos decimos 1, 2,
3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F. De hecho, stos son slo quince
dedos; nuestro ltimo dedo representa el nmero despus de F, nuestro
10, que es vuestro diecisis.
Luego A representa nuestro 10, B nuestro ll, etc., dijo Ed,
dibujando una tabla como muestra la figura 2.1.
dijo el visitante. Ahora puedes ver que el nmero
en nuestra base 16, es igual a vuestro nmero 42,417.
x
+5x
+ Bx
+1x
=
10 x 4096 + 5 x 256 + l l x 16 + 1 x 1 = 42,417
Bueno, resumiendo, vuestro sistema numrico decimal es realmente espantoso. Estuvimos a punto de no comerciar con vosotros despus de descubrir que utilizabais nmeros decimales. Afortunadamente, sin embargo,
descubrimos que la base numrica que utilizis con mayor frecuencia en
vuestros ordenadores era la hexadecimal, que en nuestra base diecisis.
N. del
Un hacker en Estados Unidos es un manaco de los ordenadores. Recurdese que Big Ed se apellida Hackenbyte.
26
www.FreeLibros.me
BASE 16
3
4
5
6
7
8
9
10
11
12
13
14
15
3
4
5
6
7
8
9
A
B
C
D
E
F
Figura 2.1.
Representacin de la base 16
www.FreeLibros.me
Hexadecimal
El visitante de Ed tena razn. El sistema hexadecimal se usa en microordenadores porque es un mtodo adecuado para acortar largas series de unos
y ceros binarios. Cada grupo de cuatro bits se puede convertir en un
valor hexadecimal de 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E o F, como
muestra la tabla 2.1.
Pasar de binario a hexadecimal es algo muy simple. Empezando por
el bit de la derecha (bit 0), divida el nmero binario en grupos de cuatro.
Si no tiene un
entero de cuatro (4, 8, 12, etc.), quedan algunos
bits vacos a la izquierda; en este caso, rellene a ceros sin ms. Despus,
convierta cada grupo de cuatro bits en un dgito hexadecimal. El resultado
es la representacin hexadecimal del valor binario, que es la cuarta parte de
largo en caracteres. La figura 2.3 muestra un ejemplo. Para pasar de
28
www.FreeLibros.me
Tabla 2.1.
Decimal
Hex.
0
1
0
1
3
4
5
6
7
8
9
10
ll
12
13
14
15
3
4
5
6
7
8
9
A
B
C
D
E
F
(NUMERO
BINARIO DE 16 BITS)
1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 1
DIVIDIR
EN GRUPOS
DE CUATRO
Figura 2.3.
(HEXADECIMAL
EQUIVALENTE)
decimal a binario, haga a la inversa. Tome cada dgito hexadecimal y convirtalo en un grupo de cuatro bits. El ejemplo est en la figura 2.4.
La notacin hexadecimal se usa para los microprocesadores Z-80,
6502, 6809 y muchos otros.
29
www.FreeLibros.me
(NUMERO
HEXADECIMAL)
CONVERTIRLO EN
GRUPOS DE CUATRO
BINARIOS
UNIR GRUPOS
1 0 1 0 0 1 1 1 1 0 1 1 0 0 1 0
Figura 2.4.
(BINARIO
EQUIVALENTE)
www.FreeLibros.me
X 16 = 496
1 F 1 E
Figura 2.5.
restos, sin embargo, es muy prctico, como muestra la figura 2.6. Tomemos, como ejemplo, el valor decimal 48,555. Dividiendo por diecisis se
obtiene un valor de 3034, con un resto de ll (B en hexadecimal). Entonces, dividiendo 3034 entre 16 da 189, con un resto de 10 (A en hexadecimal). Dividiendo 189 por 16, resulta ll, con un resto de 13 (D hexadecimal). Finalmente, dividiendo ll por 16 da 0, con un resto de ll. Los restos,
en orden inverso, son el equivalente en hexadecimal BDAB.
48555
16
55- - 3034
1
(NUMERO HEXADECIMAL
EQUIVALENTE)
16
189
16
D A
11
Figura 2.6.
31
www.FreeLibros.me
(NUMERO BINARIO
DE 8 BITS)
DIVIDIR EN
GRUPOS DE TRES
RELLENADO A
1
0 1 0
1 1 0
CONVERTIR CADA
GRUPO EN UN
DIGITO
6
EQUIVALENTE)
Figura 2.7.
Paso de binario a
32
www.FreeLibros.me
Paso entre
y decimal
El paso de
a decimal puede llevarse a cabo por el mtodo de
las potencias de ocho o por el de multiplicar por ocho y sumar. En el
primer mtodo, multiplique el dgito
por la potencia de ocho. Para
pasar el
360, por ejemplo, haramos:
=
192
+0
(NUMERO DECIMAL
EQUIVALENTE)
(NUMERO
Figura 2.8.
Paso
www.FreeLibros.me
(NUMERO
EQUIVALENTE)
1
Figura 2.9.
6 4 0 5
Paso de decimal a
Dos ejemplos del uso de cualquier base pueden ser interesantes. Una
vieja tcnica para comprimir tres caracteres en dos bytes emplea la base 40.
Cada uno de los caracteres alfabticos de la A a la Z, los dgitos del
0 al 9 y cuatro caracteres especiales (punto, coma, interrogacin y admiracin
o cualesquiera otros), forman un cdigo que corresponde del 0 al 30 en decimal. Como el mayor nmero de tres dgitos en base 40 es 39 x
+
+ 39 x
+ 39 x
63,999, los tres dgitos en base 40 pueden guardarse perfectamente en diecisis bits (dos bytes). Generalmente, los tres caracteres deberan contenerse en tres bytes. El resultado de esta compresin
consiste en el ahorro de un 50 por 100 del espacio de la memoria para
texto utilizando slo de la A a la Z, del 0 al 9 y cuatro caracteres especiales.
Un segundo ejemplo sera el proceso especia1 de tres en raya americano
toe). Cada uno de los nueve elementos de un tablero de tres en raya
contiene un cuadrado, un crculo o una cruz. Como hay tres caracteres, puede utilizarse ventajosamente una representacin en base 3 (espacio = 0, crculo = 1, cruz = 2). El mayor nmero en base 3 para este cdigo
www.FreeLibros.me
sera 2 x
+2x
+2x
+2x
+2x
+2x
+2x
+2x
+
+2x
19,682, que de nuevo puede guardarse perfectamente en diecisis
bits o dos bytes.
Los nmeros en otras bases pueden pasarse a decimal, y viceversa, por el
mtodo multiplicar por la base y sumar y por el de dividir por la base
y guardar los restos, de manera parecida a los nmeros
y
decimales.
Convenios estndar
En el resto de este libro emplearemos ocasionalmente el sufijo H
para los nmeros hexadecimales. El nmero
por ejemplo, significar 1234 hexadecimal y no 1234 decimal. (Tambin ser equivalente
en algunas versiones del BASIC.) Asimismo, expresaremos las potencias de la misma forma que lo hace el BASIC. En lugar de exponentes
utilizaremos una flecha hacia arriba (
para expresar exponenciales (elevar
un nmero a una potencia). El nmero
se representar 2 8,
ser
5 y
(0
ser 10
-7.
En el siguiente captulo trataremos los nmeros con signo. Mientras tanto,
trabaje sobre los siguientes ejercicios en hexadecimal,
y bases especiales.
Ejercicios
1.
2.
3.
4.
5.
6.
7.
9.
10.
ll.
35
www.FreeLibros.me
www.FreeLibros.me
Nmeros con
signo
notacin
en complemento
a dos
Hasta ahora hemos hablado de los nmeros binarios sin signo, que slo
representan valores positivos. En este captulo aprenderemos cmo representar valores positivos y negativos en microordenadores.
Big Ed y el bnaco
muchacho!
quieres?, pregunt Big Ed a un cliente delgado
con un abrigo muy largo de colores y brocado.
Tomar un
dijo el cliente.
traes ah?, pregunt Big Ed, cotilleando un artilugio de aspecto
extrao que pareca un baco, con slo unas pocas cuentas. Parece un
baco.
es un bnaco!, dijo el cliente. Iba a ser mi camino hacia la fama
y la fortuna, pero,
el que busca a aquellas dos como compaeras en el
camino de la vida slo encontrar desengaos.
importara escucharme?
Ed invit con sus manos a que comenzara su historia, sabiendo que
no tena eleccin; era una pesada tarde.
Este aparato es como un baco, pero funciona con nmeros binarios.
37
www.FreeLibros.me
Por eso tiene diecisis columnas de ancho y una sola cuenta por columna (Fig. 3.1). Pas aos desarrollndolo y slo recientemente he intentado
comercializarlo a travs de alguna firma de microordenadores de aqu.
lo rechazaron
www.FreeLibros.me
(COLUMNA
AADIDA)
ACME
0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0
,
(NEGATIVO)
-1308
Figura 3.2. Representacin signo/magnitud
ser positivo y las cuentas restantes contendrn el valor del nmero. Desde el
momento en que tenemos slo quince cuentas, el nmero representado ser
desde 0 (000 0000 0000 0000) a 32,767 (1 ll ll ll ll ll ll 1
qu sucede con los nmeros negativos?, pregunt el forastero.
Es lo que iba a decir. Si la cuenta de la posicin 15 est abajo o 1,
entonces el nmero representado es negativo. En este caso, mueva todas las
cuentas que estn arriba o 0 hacia abajo o 1. Mueva todas las cuentas que
estn abajo o 1 hacia arriba o 0. Finalmente, sume 1.
Gracias por su ayuda, seor, dijo el forastero con ojos de incrdulo,
mientras coga el aparato y se diriga a la puerta.
espere, el sistema funciona
exclam Bob. Mire, permtame mostrarle. Suponga que tiene la configuracin 0101 1110 1111 0001. La cuenta
del signo es un 0, luego el nmero representa 101 1110 1111 0001 (en
hexadecimal,
en decimal, 24,305). Ahora, suponga que la
racin es 1001 1010 0001 0101. La cuenta del signo es un 1, luego el nmero
es negativo. Ahora invierta la posicin de todas las cuentas y sume una.
(Vase la figura 3.3.)
El resultado es 0110 0101 1110 1011. Ahora pasamos el nmero al decimal 26,091; adems, el nmero representado es -26,091. Este esquema
es el mismo que usan los microordenadores.
vender fcilmente su
idea del bnaco a un fabricante, si le dice que emplea este sistema de notacin en complemento dos para los nmeros negativos!
El forastero pareca dudar.
ver si entiendo esto. Si la cuenta del signo
es un uno,
todas las cuentas y aado uno? Djeme probar unos
pocos ejemplos. Movi las cuentas del bnaco y calcul sobre el mantel.
www.FreeLibros.me
DEL
=1
CAMBIAR DE POSICION TODAS
LAS CUENTAS SI LA CUENTA
DEL SIGNO ES UN UNO
SE SUMA UNO AQUI
(CUENTA
ABAJO)
0 1 1 0 0 1 0 1 1 1 1 0 1 0 1 1
Figura 3.3.
www.FreeLibros.me
13,684)
( 16,640)
-2,956)
NUMERO EN COMPLEMENTO
A DOS
111
1111
010
0000
REPRESENTACION
DECIMAL
0000 0000
0000 0000
1111
1111
1111
1111
1111 1111
0010
0000 0 0 0 1
0000 0000
1111 1111
1111 1110
1111 1101
ll
0000
0000
-4,096
00000000
0000
-32,768
ll
1000
Figura 3.4.
0000
0
-1
www.FreeLibros.me
ACARREO A
POSICION
SIGUIENTE
1
1
ACARREO
1
ACARREO A
LA POSICION
SIGUIENTE
Figura 3.5. Suma de binarios
Probemos esto con dos nmeros sin signo de ocho bits, los nmeros con
que hemos estado operando en anteriores captulos. Supongamos que sumamos 0011 0101 y 0011 0111 (53 y 55, respectivamente).
ll
111
(Acarreos)
0011 0101
0011 0111
0110 1100
(53)
(55)
(108)
- 0
1
1
-1
0
-1
-1
ACARREO NEGATIVO
HACIA LA SIGUIENTE
POSICION
www.FreeLibros.me
(Acarreo negativo)
(41)
El uno encima del operando representa el acarreo negativo de la siguiente posicin. El resultado es 0010 1001, 41, como era de esperar.
Pongamos ahora otro ejemplo. Restemos 0011 1111 de 0010 1010,
63 de 42:
1111 111
(Acarreos negativos)
0010 1010
0011 1111
1110 1011
(42)
(63)
(??)
www.FreeLibros.me
FORMATO DE 8 BITS
EN COMPLEMENTO A DOS
BIT DE SIGNO
0 = POSITIVO
1 = NEGATIVO
15
14
13
12
11
10
FORMATO DE 16 BITS
EN COMPLEMENTO A DOS
BIT DE SIGNO
0 = POSITIVO
1 = NEGATIVO
Figura 3.7.
Los valores de 8 bits se utilizan para desplazamientos en las instrucciones del microprocesador para modificar la direccin de un operando
guardado en memoria. Los valores de 16 bits se emplean como variables enteras en programas de BASIC. Por supuesto, cualquiera de ellos puede
ser utilizado por el programador de BASIC o lenguaje ensamblador para
representar lo que desee.
www.FreeLibros.me
16,383)
(-1)
(+ 16,638)
(+ 16,383)
(-1)
16,382)
($112)
ver lo que sucede en la resta, y tiene alguna relacin con las operaciones
de que hablaremos en el captulo siguiente.
Antes de tratar algunas particularidades de la suma y la resta, como
errores de desbordamiento y acarreos, y los indicadores de los microprocesadores ordinarios, intente hacer alguno de los siguientes ejercicios para
adiestrarse en la suma y la resta en complemento a dos.
Ejercicios
1. Sume los siguientes nmeros sin signo, dando los resultados en binario y
decimal.
01
ll
0111
1111
010101
101010
2. Reste los siguientes nmeros sin signo, dando los resultados en binario y
decimal.
10
01
3.
0111
0101
1100
0001
Halle los complemento a dos de los siguientes nmeros con signo, cuando sea
necesario, para obtener los nmeros decimales representados por:
01101111, 10101010, 10000000
4.
5.
3,
30,
6.
7.
1, -2,
Sume 5 a 300.
no, en binario !)
Reste - 5 de 300 en binario.
www.FreeLibros.me
Acarreos,
errores de
desbordamiento
e indicadores
En este captulo ampliaremos algunos de los conceptos introducidos en
el anterior. Algunos de stos son sutiles y otros no tanto, y todos ellos se
refieren a nmeros con signo. Analizaremos aqu algunos de ellos.
www.FreeLibros.me
acarrear lo que sea; as que pens que daba el tipo, pero el jefe de personal
se rio y me seal la puerta.
Creo que entiendo el problema, seor, dijo un cliente de constitucin
delgada que no aparentaba ms de catorce aos. Una tarjeta de referencia
del Z-80 sobresala del bolsillo de su camisa. Soy un programador con
mucha experiencia en errores de desbordamiento.
No saba que trabajabais en transportes.
Bueno, nosotros manejamos el traslado de datos de los procesadores,
pero trabajamos bastante con el error de desbordamiento.
importa si
le explico? El transportista arque las cejas y esper.
. . . despus de varias tazas de caf de Ed, el programador haba hablado
del sistema binario y de las operaciones aritmticas simples.
Como puede ver, se puede almacenar cualquier valor de 128 a + 127
en 8 bits, o cualquier valor de 32,768 a + 32,767 en 16 bits.
El transportista dijo : S, salvo los nmeros sin signo, en cuyo caso se
extiende de 0 a 255 o de 0 a 65,535 2 (N
donde N es el tamao
del registro en bits.
Vaya, usted aprende rpido, dijo el programador. Ahora, continuando... Si realizamos una suma o resta cuyo resultado sea mayor de
o menor de 32,768 (o mayor de + 127 o menor de
ocurre?
Bueno, supongo que se obtiene un resultado incorrecto, dijo el transportista
Es cierto, se obtiene un resultado incorrecto. El resultado es demasiado
grande en sentido positivo o negativo para poder ser almacenado en 8
16 bits. En este caso, se produce un error de desbordamiento porque el
resultado excede del valor que puede contenerse en 8 16 bits. Sin embargo,
hemos diseado un indicador de error de desbordamiento como parte del
microprocesador. Este indicador puede examinarse por un programador del
lenguaje ensamblador para ver si se ha producido un error de desbordamiento despus de una suma o de una resta. Y resulta que, cuando pasa
lo mismo en operaciones sin signo, se produce un error de acarreo,
que es lo que tambin pedan en el anuncio. No slo tenemos un indicador
de error de desbordamiento, sino un indicador de acarreo, otro de signo,
otro de cero...
Espera un segundo.
decir que esa gente de personal quera
un ingeniero informtico especializado en aritmtica de microprocesadores?, dijo el transportista con una mueca.
que me han tomado el
pelo!
doctor en Fsica!
usted un doctorado en Fsica escupi Big Ed, esparciendo la
mayor parte de un trago de Big Eds Java sobre el suelo del restaurante.
S, hago mudanzas y portes slo para ganarme la vida, dijo el transportista al salir por la puerta, moviendo la cabeza con pesadumbre.
www.FreeLibros.me
Errores de desbordamiento
Como vimos en el ejemplo anterior, el error de desbordamiento es posible cada vez que se hace una suma o resta y el resultado es demasiado
grande para almacenarse en el nmero de bits reservado para el resultado.
En la mayora de los microordenadores, esto significara que el resultado
es mayor que el que puede almacenarse en 8 16 bits.
Supongamos que operamos con un registro de 8 bits en el microprocesador. Una tpica instruccin de suma sumara los contenidos de un registro de 8 bits, llamado acumulador, a los contenidos de otro registro o
posicin de memoria. Ambos operandos estaran en complemento a dos con
signo.
qu condiciones se producira el error de desbordamiento? Cualquier resultado mayor de + 127 o menos de 128 dara lugar a error de
desbordamiento. Ejemplos:
1111 0000
+ 1000 1100
0111 1100
(-16)
(-116)
124
0111 1111
0100 0000
1011 1111
127)
(-80
Acarreo
Otra condicin importante es la de acarreo. Hemos visto cmo se usan
los acarreos en sumas de nmeros binarios, y cmo los acarreos negativos
se emplean en restas. El acarreo que se produce por una suma es aquel que
se produce a continuacin del dgito ms significativo del resultado. Un
ejemplo: supongamos que sumamos los dos nmeros siguientes:
1 1111 111
0111 1111
1111 1111
0111 1110
(Acarreos)
(-1)
126)
51
www.FreeLibros.me
Los unos encima de los operandos representan los acarreos a la siguiente posicin. El acarreo de ms a la izquierda, sin embargo, cae
fuera de las posiciones ocupadas por los bits. De hecho, al no coincidir
con estas posiciones, pone el indicador del acarreo a 1 en el microprocesador de que se trate.
til este acarreo? No mucho, en este ejemplo.
Habr un acarreo siempre que el resultado no sea negativo. Cuando el resultado cambia de 0000 0000 a 1111 1111, no se produce ningn acarreo.
Como este indicador puede comprobarse con un salto condicional, si hay
acarreo o un salto condicional, si no hay acarreo a nivel de lenguaje
mquina, el estado del acarreo es til a veces. Tambin se utiliza para desplazamientos, que veremos ms adelante.
Otros indicadores
Los resultados de operaciones aritmticas como suma y resta establecen
generalmente otros dos indicadores en el microprocesador. Uno es el indicador cero. Se pone a (1) cuando el resultado es cero, y se pone a (0) cuando
el resultado no es cero. Se pondra a (1) para una suma de + 23 y
23, y
se pondra a (0) para una suma de 23 y + 22. Puesto que constantemente
comparamos valores en programas en lenguaje mquina, el indicador cero
se maneja mucho en la prctica.
El indicador signo tambin se utiliza generalmente. Este se pone a 1
o a 0 de acuerdo con el resultado de la operacin; refleja el valor del bit
en la posicin ms significativa.
El indicador de cero y el de signo pueden comprobarse en programas en
lenguaje mquina por medio de saltos condicionales como salto si es cero,
salto si no es cero, salto si es positivo y salto si es negativo. Ntese
que una condicin de positivo incluye el caso de que el resultado sea cero.
El cero es un nmero positivo en la notacin en complemento a dos.
7 6 5 4 3 2 1 0
REGISTRO
INDICADOR DE ACARREO
INDICADOR DE SUMA-RESTA
INDICADOR DE PARIDAD 0
ERROR DE DESBORDAMIENTO
INDICADOR DE MEDIO ACARREO
INDICADOR DE CERO
INDICADOR DE SIGNO
Figura 4.1.
7 6 5 4 3 2 1 0
REGISTRO DEL
DE
LA CONDICION
E F H I N Z V C
INDICADOR DE ACARREO
INDICADOR DE ERROR DE
DESBORDAMIENTO
INDICADOR DE CERO
INDICADOR NEGATIVO
MASCARA DE PETICION
DE
ESTADO ENTERO EN
LA PILA
Figura 4.2.
www.FreeLibros.me
Ejercicios
1.
2.
01111111
0000000 1
3.
10101111
+ 11111111
11111111
+ 00000001
www.FreeLibros.me
11011111
10101010
Operaciones
lgicas
y desplazamientos
Las operaciones lgicas en microordenadores se utilizan para manipular
datos en base a un bit o un campo. Los desplazamientos tambin son tiles
para procesar bits en nmeros binarios o para implementar multiplicaciones
y divisiones simples.
El enigma britnico
Las cosas iban tranquilas en el restaurante de Big Ed en el Valle del Silicio. Este se dispona a ojear el peridico local, cuando oy un frenazo; un
imponente autobs rojo de dos pisos se detena frente al restaurante. Las
puertas del autobs se abrieron y una docena o ms de personas se precipitaron al exterior. Todas ellas aparecan vestidas con tweed, sombreros hongos
y otras prendas tpicamente britnicas. Uno incluso llevaba un paraguas
negro, y no paraba de mirar ansiosamente al cielo.
servirles en algo?
Ms bien.
usted acomodar a un grupo de diecisiete ingenieros
informticos y cientficos britnicos?
Creo que s, dijo Big Ed. Si no les importa juntar dos mesas, podemos poner a ocho de ustedes en la mesa A y a otros ocho en la B.
57
www.FreeLibros.me
58
www.FreeLibros.me
SILLA DE
Figura 5.2. El grupo rota
www.FreeLibros.me
HHHI
B
A
SILLA DE
CAJA
REGISTRADORA
Operaciones lgicas*
Todos los microordenadores son capaces de realizar las operaciones
lgicas de Y, 0 y 0 exclusiva a nivel de lenguaje mquina. Adems, la
Operacin 0
La operacin 0 se muestra en la figura 5.4. Su tabla de verdad establece que habr un 1 en el resultado si uno de los operandos, o ambos,
tienen un 1.
La operacin 0 se utiliza, a nivel de lenguaje mquina, para poner a
1 un bit. Una aplicacin tpica debera emplear los ocho bits de una posicin de memoria como ocho indicadores para diversas condiciones, segn
muestra la figura 5.5. La 0 no es tan ampliamente utilizada en BASIC, pero
* N. del T.: Hemos decidido traducir las operaciones lgicas DND, OR, XOR y NOT
por Y, 0,
y NO, respectivamente, para lograr una ms fcil comprensin del texto.
www.FreeLibros.me
0
0 1
0
0
1
0 0
1
0
1
0
00110111
01011011
RESULTADO
8-BIT 0
01111111
Figura 5.4. Operacin 0
INDICADORES EN UNA POSICION DE MEMORIA
CUALQUIER BIT PUEDE PONERSE
A UNO POR UNA OPERACION 0
0 = MASCULINO 1 = FEMENINO
0= NORMAL
1 = PELO
ALBOROTADO
0= NORMAL
1 = INGENIERO
CHIFLADO
0 = ALTO
1 = BAJO
0 = PELO CASTAO
1 = PELO NEGRO
2 = PELO RUBIO
3 = PELIRROJO
4 = PELO BLANCO
5 = PELO GRIS
6 = PELO NARANJA
7 = CALVO
0= NORMAL (HIJA)
1 =SEPTIMO HIJO (HIJA) DE
UN SEPTIMO HIJO (HIJA)
0 0 1 0 0 1 0 0
1 1 0 0 0 0 0 0
1 1 1 0 0 1 0 0
Figura 5.5.
Usando la operacin 0
61
www.FreeLibros.me
Operacin Y
La operacin Y se describe grficamente en la figura 5.7. Tambin opera
nicamente a nivel de bit, sin acarreos a otras posiciones. El resultado de Y
es un 1 si ambos operandos son 1; si alguno tiene 0, el resultado es 0.
0
0
0
1
1
0
0 011 0111
0 1011011
8 BITS Y
0 0010 011
Figura 5.7. Operacin Y
0 0 1 ~ 0 0 1 0 0
SEPTIMO HIJO DE UN
SEPTIMO HIJO, PELO NEGRO,
ALTO, MASCULINO
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0
0 = MASCULINO
1
ES FEMENINO
Figura 5.8.
10
0 0
Ejemplo de Y
LINEA DE CUENTA=45
0 0 0 1 1 1 1 1
MASCARA DE LA LINEA 32
0 0 0 0 1 1 0 1
=0, SI ES LA LINEA 32
SI NO ES
LINEA 32
Figura 5.9.
Operacin 0 exclusiva
La figura 5.10 muestra esta operacin. Sus reglas establecen que el
resultado es un 1, si uno u otro bit, pero no ambos, son unos. En otras
palabras, si ambos bits son unos, el resultado es 0.
0
0
0
0
0 ex
1
1
01011011
0
1
RESULTADO
B I T 8 0 EXCLUSIVA
0011
0 11
01
1 00101 1
Figura 5.10. Operacin 0 exclusiva
www.FreeLibros.me
0 0 0 0 0 0 0 1
0 ex
0 0 0 0 0 0 0 1
PASADA SIGUIENTE
0 ex
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1
PASADA SIGUIENTE
www.FreeLibros.me
1010
Operaciones de desplazamiento
La reunin de los britnicos en el restaurante mostraba dos tipos de
desplazamiento comnmente utilizados en microordenadores: rotaciones y
desplazamientos lgicos. Son susceptibles de realizarse en lenguaje mquina,
pero no en BASIC, y generalmente operan en ocho bits de datos. Estn
relacionados con el indicador de acarreo tratado en el ltimo captulo.
Rotaciones
La figura 5.2 mostraba una rotacin con la mesa A en el restaurante.
Observemos ahora la figura 5.13, donde los datos se
a derecha o
izquierda, una posicin cada vez. Aunque los ordenadores ms complejos
permitirn cualquier nmero de desplazamientos con una instruccin, los ms
simples slo permiten un desplazamiento por cada instruccin.
Como los datos
fuera de los lmites del registro del microprocesador o posicin de memoria, o bien vuelve al lmite opuesto del registro
o posicin de memoria, o bien va al indicador de acarreo. Si los datos pasan
a travs del acarreo, se trata en realidad de una rotacin de 9 bits. Si los
datos pasan por alto el acarreo, se tratar de una rotacin de 8 bits.
En cualquier cuso, el bit desplazado siempre va al acarreo, como muestra la
figura 5.13.
El indicador de acarreo puede comprobarse por una instruccin de salto
condicional a nivel de lenguaje mquina para comprobar efectivamente si el
bit desplazado era un cero o un uno. La rotacin se utiliza para comprobar
un bit de una vez para operaciones como multiplicacin (vase captulo
siguiente) o el alineamiento de datos en una operacin Y.
Desplazamientos lgicos
El segundo tipo de desplazamiento reflejado en la ancdota del restaurante era el lgico. Este no es una rotacin. Los datos caen fuera del
lmite, de la misma forma que los cientficos se fueron del restaurante.
65
www.FreeLibros.me
1
c l
A N T E S
ACARREO
1 0 1 1 1 1 0 1
Figura 5.13. Dos rotaciones
www.FreeLibros.me
1 1 0 1 1 0 1 1 J - cX l
ANTES
0 1 1 0 1 1 0 1
Desplazamientos aritmticos
Cuando se realiza un desplazamiento lgico con nmeros con signo,
surge un problema. Consideremos el caso del nmero 1100 ll ll es un
valor de -49. Cuando el nmero se desplaza hacia la derecha, el resultado
es 0110 0111, representando el valor + 103. Obviamente, el desplazamiento
no dividi el nmero 49 por 2 para obtener un resultado de 24.
Para resolver el problema de desplazar datos aritmticos, se suele incluir
un desplazamiento aritmtico en los ordenadores.
El desplazamiento aritmtico conserva el signo segn se desplaza a la derecha, de forma que el desplazamiento es (casi) aritmticamente correcto.
67
www.FreeLibros.me
Si se realizase un desplazamiento aritmtico en el ejemplo anterior, el resultado sera el que muestra la figura 5.15.
BIT DE SIGNO = 1 = NEGATIVO
ACARREO
1 1 0 0 1 1 1 1
ANTES
ACARREO
Figura 5.15.
sucede con los desplazamientos a la izquierda? En algunos microordenadores, el desplazamiento aritmtico a la izquierda mantiene el bit
de signo y desplaza el siguiente bit ms significativo al acarreo, como muestra la figura 5.16. En otros microordenadores no hay autnticos desplazamientos a la izquierda.
BIT DEL SIGNO NO AFECTADO
ACARREO
ANTES
ACARREO
1
1 0 0 1 1 1 1 0
Figura 5.16.
www.FreeLibros.me
Ejercicios
1. Efecte la operacin 0 en los siguientes conjuntos de operandos binarios
de 8 bits.
10101010
0 00001111
2.
10110111
0 01100000
10110111
01100000
Invierta el signo de los siguientes operandos (con signo). Escriba sus equivalentes en decimal.
00011111, 0101, 10101010
5.
6.
00101111, c = 1 10000000
www.FreeLibros.me
Escriba el acarreo despus del desplazamiento, y el valor decimal de los operandos antes y despus de los desplazamientos:
01111111, 01011010, 10000101, 10000000
10. Efecte un desplazamiento lgico a la izquierda de los siguientes operandos.
Escriba el acarreo despus del desplazamiento, y el valor decimal de los
randos antes y despus de los desplazamientos:
01 ll 1111, 01011010, 10000101, 10000000
ll. Efecte un desplazamiento lgico hacia la derecha sobre los siguientes
randos, y escriba los valores decimales antes y despus del desplazamiento:
01111111, 10000101, 10000000
70
www.FreeLibros.me
Multiplicacin
y divisin
La mayora de los microordenadores actuales no incluyen instrucciones
de multiplicacin y divisin. En consecuencia, estas operaciones han de hacerse en rutinas de software; al menos, en lenguaje mquina. En este captulo analizaremos algunas de las formas en que la multiplicacin y divisin pueden realizarse en software.
denadores y todo eso. Quiere que hagamos todos los clculos en binario
para que practiquemos. No me importa cuando se trata de sumar o restar,
pero la multiplicacin me vuelve loca.
mtodo empleas, Zelda? Quiz pueda ayudarte.
Cada vez que multiplico, hago una suma sucesiva. Como en este caso,
en que tenas doce postres. Cada uno cuesta 65 centavos, as que sumo
1100, que es doce en binario, 65 veces.
S, eso realmente es correcto; de acuerdo, dijo Don, tratando de no
rerse. Ese mtodo de suma sucesiva es vlido, pero lleva mucho tiempo.
Permteme que te ensee un mtodo ms rpido; se llama desplazamiento
y
Rpidamente hizo sitio en el mantel de una mesa cercana, amontonando un poco los cubiertos y dems objetos. Sac un portaminas. Es una
pena que no tengamos papel cuadriculado, pero los cuadros del mantel
servirn.
Tomemos estos 65 centavos por postre para un ejemplo de doce unidades. Antes de nada, dibujaremos dos registros. El registro del producto
parcial tiene una amplitud de 16 bits; as (vase la figura 6.1). El registro
de los multiplicandos tiene una amplitud de 8 bits. Entonces, en los ocho
bits de arriba del registro del producto parcial pondremos los doce, el
multiplicador. Lo hemos rellenado a ceros hasta ocho bits para obtener
0000 1100. El resto del registro ser una serie de ceros. Seguidamente,
pondremos el multiplicando en el registro del multiplicando.
MULTIPLICADOR
ACARREO
L l - l
0 0 0 0 11 0 0
00000000
REGISTRO DE PRODUCTOS
PARCIALES
SUMA
01000001
Figura 6.1.
REGISTRO DEL
MULTIPLICANDO
Algoritmos de multiplicacin
Sumas sucesivas
Zelda utilizaba un mtodo de multiplicacin sencillo, llamado suma sucesiva (Fig. 6.3). En l, el multiplicando (nmero que ha de ser multiplicado)
es multiplicado por el multiplicador. El proceso se realiza haciendo cero un
resultado llamado producto parcial y sumando el multiplicando al producto
parcial por el nmero de veces indicado por el multiplicador. El ejemplo
anterior era 65 veces 12, que Zelda resolvi sumando 12 al producto parcial
65 veces.
Aunque este mtodo es sencillo, es muy largo en la mayora de los
casos. Supongamos que trabajamos con una multiplicacin ocho por ocho.
Una multiplicacin de 8 por 8 bits produce un resultado de 16 bits
como mximo. El multiplicador promedio es 127, si se hace una multiplicacin sin signo. Esto quiere decir que, en la mayora de los casos, tendran
que hacerse 127 sumas separadas del producto parcial.
Esto difiere de la tcnica de Don de desplazamiento y suma de ocho
iteraciones. En el peor de los casos, la suma sucesiva supondr 255 sumas;
en el mejor de los casos, una. Es mejor dejar la multiplicacin por suma
sucesiva para aquellos casos en que el multiplicador se fija en algn valor
bajo y constante; por debajo de 15 o as, o para cuando es necesario hacer
multiplicaciones poco frecuentes.
75
www.FreeLibros.me
MULTIPLICANDO
EN 8 BITS
MULTIPLICADOR = 12
EN 8 BITS
EMPEZAR
0 1000 001
00011000
00000000
DE
ITERACION 1
11000000
00000000
t
0 1000 001
www.FreeLibros.me
16 B I T S
00000000
00000000
00000000
00000000
00001100
ITERACION 1
00001100
RESULTADO DE LA ITERACION 1
00001100
ITERACION 2
00000000
00011000
RESULTADO DE LA ITERACION 2
00000010
11110100
RESULTADO
00000000
00001100
ITERACION 64
0 0000 011
00000000
RESULTADO DE
00000000
0 0000 011
00001100
0 0 0 0 11 0 0
LA ITERACION 63
ITERACION 64
ITERACION 65
RESULTADO DE LA ITERACION 65
www.FreeLibros.me
MULTIPLICANDO = ll
0000 10 1 0
MULTIPLICADOR = 10
MULTIPLICANDO = ll x 2
22. GUARDAR
MULTIPLICANDO = 22 x 2 = 44
0 1 0 11 0 0 0
MULTIPLICANDO = 44 x 2 = 88
000 10 1 10
RESULTADO PREVIO
0 110 111 0 PRODUCTO=11 0
suma
www.FreeLibros.me
MULTIPLICANDO (65)
0 0 0 0 11 0 0
MULTIPLICADOR (12)
0100000100
0 1000 001
0 11 0 0 0 0 11 0 0
Figura 6.5.
PRODUCTO (780)
sin signo
EL MULTIPLICANDO
SE
A LA IZQUIERDA
EN CADA ITERACION
UN BIT DEL
MULTIPLICADOR
SE EXTRAE POR
DESPLAZAMIENTO
A LA DERECHA
0000000000000000
0 0 00 1 0 1 1 - x
PRODUCTO PARCIAL
MULTIPLICANDO = 170 ANTES DE
MULTIPLICADOR = ll
MULTIPLICAR
0000000010101010
-0000000101010100
0 0 00 0 1 0 1 - 1
PRODUCTO = 170
SUMAR,
DESPLAZAR
DE
ITERACION 1
0000000111111110
-0000001010101000
0 0 00 0 0 1 0 - 1
PRODUCTO = 510
SUMAR,
DESPLAZAR
DE
ITERACION 2
0000000111111110
-0000010101010000
0 0 00 0 0 0 1 - 0
PRODUCTO = 510
SOLO DESPLAZAR
DE LA
ITERACION 3
0000011101001110
-0000101010100000
0 0 00 0 0 0 0 - 1
PRODUCTO = 1870
SUMAR,
DESPLAZAR
DE LA
ITERACION 4
0 exclusiva. Si se toma una 0 exclusiva del multiplicando y del multiplicador, el bit ms significativo del resultado (signo) ser el signo del producto.
Por ejemplo,
1011 1010
0000 1010
1011 0000
(+
www.FreeLibros.me
Hay un pequeo problema en el mtodo anterior. El error de desbordamiento no era posible en el mtodo sin signo, pero es posible en el mtodo con signo tan slo en un caso. Cuando tanto el multiplicador como el
multiplicando son valores negativos mximos, el producto tendr un error
de desbordamiento. Por ejemplo, si en una multiplicacin de ocho por ocho
tanto el multiplicador como el multiplicando son 1000 0000
el
producto ser
que es demasiado grande para ser almacenado en
diecisis bits. Esta condicin puede ser comprobada antes de que la multiplicacin tenga lugar.
Algoritmos de divisin
Los algoritmos de divisin en software son algo ms difciles de
mentar que los de multiplicacin. Uno de los mtodos de divisin es la
resta sucesiva, el que Zelda utilizaba cuando la dejamos. El segundo es la
divisin con recuperacin bit a bit.
Resta sucesiva
La resta sucesiva se muestra en la figura 6.7. En este mtodo el cociente
se rellena a ceros inicialmente. El divisor se resta del dividendo sucesivamente hasta que ste se vuelve negativo. Cada vez que se resta el divisor,
la cuenta del cociente se incrementa con uno. Cuando el dividendo se
vuelve negativo, el divisor se suma una vez al residuo para recuperar el
resto. (El residuo es la cantidad restante del dividendo.) La cuenta es el
cociente de la divisin, mientras el resto est en el residuo, como muestra
la figura 6.7.
Como en el caso de la multiplicacin por suma sucesiva, la resta sucesiva es muy lenta en la mayora de los casos. Si operamos con un dividendo de 16 bits y un divisor de 8, el cociente medio es 255. Un total de
255 restas es tan intolerable como en el caso de la multiplicacin. La resta
sucesiva para una divisin es buena cuando el tamao del divisor es grande
comparado con el del dividendo; por ejemplo, si el divisor fuese 50 y el dividendo fuera un mximo de 255, slo habra que hacer cinco restas en el peor
de los casos; por lo cual este mtodo de divisin sera eficaz.
www.FreeLibros.me
CUENTA
(COCIENTE)
DIVIDENDO
DIVISOR
00000110
00000101
00000101
00000100
00000100
00000100
00000011
00000011
00000010
00000010
00000010
00000001
00000001
00000001
00000000
(DIVIDENDO
SE VUELVE
NEGATIVO)
11111111
00000000
00011011
01100100
10110111
01100100
01010011
01100100
11101111
01100100
10001011
01100100
00100111
01100100
11000011
01011111
01100100
11111011
01100100
10010111
01100100
00110011
01100100
11001111
01100100
01101011
01100100
00000111
10100011
01100100
00111111
01100100
11011011
01100100
00111111
1563
-100
-100
-100
-100
-100
-100
-100
-100
-100
-100
-100
-100
-100
-100
-100
9
10
ll
12
13
14
-100
(RESTO
RECUPERADO)
RESTO=63
www.FreeLibros.me
DIVIDENDO = 3500
DIVISOR
0000110110101100
1100000
96
0000
100100
0001101011
COCIENTE = 3 6
1100000
000101 loo
RESTO = 4 4
Figura 6.8. Ejemplo de divisin bit a bit
www.FreeLibros.me
RESTO
FINAL
.
24 BITS
DESPLAZADOS
EN 16 VECES
DIVIDENDO
,
00000000
0 0 0 0 11 0 1
1 0 1 0 11 0 0
-0
(1 SI EL RESULTADO
DE LA RESTA ES
POSITIVO, 0 SI EL
RESULTADO
ES NEGATIVO)
RECUPERAR
SI ES NEGATIVO
,
DIVISOR
COCIENTE FINAL
Ejercicios
1.
www.FreeLibros.me
2.
www.FreeLibros.me
?
=?
Mltiple
precisin
Muchas veces es necesario trabajar ms all de la precisin ofrecida por
ocho o diecisis bits. Las cantidades del mundo real, como las constantes
fsicas, datos de cuentas y otros valores numricos exceden, a menudo, el
rango de
a 32,768 de cantidades de 16 bits. Los valores mayores pueden expresarse utilizando varios bytes para almacenar cada operando. En este captulo veremos cmo puede hacerse esto utilizando bytes
de 8 bits.
www.FreeLibros.me
Suma
11111111
11111111
11111111
11111111
11111111
11111111
Los bits se numeraran segn nuestra representacin estndar de potencias de dos, con el bit 0 al extremo de la derecha y con el 63 a la izquierda,
como un bit de signo. El valor de
(observe
que es uno ms que en magnitud que el nmero positivo), se representara:
10000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
Los dems valores estaran entre estos dos lmites. Fjese que hay slo
un bit de signo y que el nmero se considera como un grupo nico de
64 bits, aunque est fsicamente separado en ocho bytes.
www.FreeLibros.me
AL
01001100~ 0 1 0 1 1 1 1
00011110
11110001
01101011
10100000
,
BYTE1
ACARREO
1
10101111
11110001
SUMA1
10100000
01001100
S UMA 2
00011110
01101011
Figura 7.1.
www.FreeLibros.me
de resta con acarreo negativo, comnmente denominadas operaciones de resta con acarreo. La figura 7.2 muestra la operacin de resta
con dos operandos de 8 bits.
ACARREO
NEGATIVO
AL SIGUIENTE BYTE
01111010 - 0 0 0 0 0 0 0 0
00110001
00000001
01001000
11111111
BMEO
ACARREO
00000001
RESTAR 1
11111111
RESTAR 2
00110001
01001000
Figura 7.2.
www.FreeLibros.me
80 EN CUADRUPLE PRECISION
0 111111 0
10000001
11111111
BYTE
MAS
SIGUIENTE
SIGUIENTE
BYTE MAS BYTE MENOS
SIGN.
SIGN.
1111 000 0
BYTE
MENOS
SIGN.
BYTE MAS
0000 MEMORIA DE
ALMACENAMIENTO
SIGN.
SIGN. BYTE
BYTE
MAS SIGN. MENOS SIGN. MENOS SIGN.
REGISTRO DE ACCESO DE
SIGTE.
MAS SIGN.
BITS
BYTE
SIGTE. BYTE
MAS SIGN. MENOS SIGN. MENOS
Figura 7.3.
del registro, y al segundo byte en los ocho superiores. En este caso, los
datos deben disponerse en grupos de dos bytes ordenados del menos al ms
significativo, como muestra la figura 7.3.
www.FreeLibros.me
Suponga que queremos multiplicar los dos nmeros sin signo 778 y 1066.
Ambos pueden almacenarse en 16 bits cada uno, como sabemos. Los nmeros aparecen como muestra la figura 7.4. Observe algo interesante:
cada nmero puede almacenarse en dos partes; los ocho bits superiores y
los ocho bits inferiores. En el caso de 778, por ejemplo, los superiores son
3 x 256, y los inferiores, 10. La parte superior de 1066 es igual a 4 x 256,
y la pequea inferior es 42. Podramos expresar 778 x 1066 como:
778 x 1066 =
+ 10) x
+ 42)
+ (10 x
x
+
00000100
10
00101010
256
42
1066
primer trmino 3 x 256 x 4 x 256 es lo mismo que 3 x 4 desplazado hacia la izquierda diecisis bits. El segundo trmino es lo mismo que
10 x 4 desplazado hacia la izquierda ocho bits. El tercero es lo mismo que
42 x 3 desplazado a la izquierda ocho bits. El cuarto es una simple multiplicacin de 10 x 42. De hecho, para calcular el producto, todo lo que hay
que hacer es:
1. Poner a cero un producto de 32 bits (cuatro bytes).
2. Multiplicar 3 x 4 y sumar el resultado a los dos primeros bytes del
producto.
3. Multiplicar 10 x 4 y sumar el resultado a los bytes segundo y tercero
del producto.
4. Multiplicar 42 x 3 y sumar el resultado a los bytes segundo y tercero
del producto.
5. Multiplicar 10 x 42 y sumar el resultado a los bytes tercero y cuarto
del producto.
www.FreeLibros.me
X 1066 = 829,348
42
10
42
Desgraciadamente, las divisiones en mltiple precisin no pueden ejecutarse tan fcilmente. De nuevo, en este caso, no hay bastantes registros
en el microprocesador y no son suficientemente amplios para manejar con
eficacia la divisin de muchos bytes. Trataremos la divisin de nmeros
ms grandes, con alguna prdida de precisin, por el mtodo de puntos
flotantes en el captulo 10. Mientras tanto, intente hacer los siguientes
ejercicios para fijar lo que ha aprendido en este captulo.
www.FreeLibros.me
Ejercicios
1.
2.
11111111
00000000
01011011
11111111
00111111
OOOOOO01
11111111
00000000
01011011
10000001
00000000
00000001
10101000
10111011
01111111
10101011
101111011
www.FreeLibros.me
01111111
Fracciones
y factores
de escala
Hemos hablado mucho acerca de los nmeros binarios a lo largo de
este libro, pero todos los nmeros eran valores enteros. En este captulo
veremos cmo se pueden representar fracciones en notacin binaria y cmo
los nmeros pueden escalarse para representar nmeros mixtos.
www.FreeLibros.me
BALANZA BINARIA
MARK ACME
EQUILIBRIO
PORCION
PUESTA A CERO
www.FreeLibros.me
ACME
128
64
32
16
. EQUILIBRIO
Figura 8.2. El modelo primitivo
El panel frontal, como puede ver, est marcado, 128, 64, 32, 16, 8,
4, 2, 1, representando
de onza,
de onza,
de onza,
de
onza,
de onza,
de onza,
de onza y
de onza.
embargo,
se not que su uso era demasiado complicado para profanos, ya que tenan
que multiplicar el nmero de onzas requerido por 16 y, entonces, seleccionar la combinacin de botones. La gente que usaba la mquina empez
a referirse a este proceso como escalamiento, de forma irnica. El modelo II
es mucho ms fcil de manejar.
Bueno,
gustara quedarse con uno, y ya pagar ms adelante?
No; ahora mismo, no. Muchas gracias por la demostracin, de todas
formas. Tenga, coja un sandwich de carne; le har juego con su corbata
verde.
www.FreeLibros.me
POSICION
1
2t -2 =
1
=
POSICION
POSICION
POSICION
1
POSICION
1 1 0 1 0 . 1 0 1 1 1
PUNTO BINARIO
Figura 8.3.
Mientras que las posiciones de los enteros son potencias de dos, las posiciones fraccionarias son los inversos de las potencias de dos:
1,
2,
3, etc.
Consideremos algunos ejemplos ms. El nmero binario mixto 0101.1010
se forma partir del entero 0101, que es el decimal cinco, y la porcin
fraccionaria
Esto representa
+
+
que da
El
nmero total, pues, equivale al nmero decimal 5
5.625.
El nmero binario mixto 0111.0101011 se forma a partir del entero
0111, 7 decimal, y la parte fraccionaria
La parte fraccionaria
El
es
+
+
+ 28 o
ro mixto total es, por tanto, 7.3359375.
Para pasar de un nmero fraccionario binario a decimal, hay que transformar la parte entera por alguno de los mtodos anteriormente vistos;
luego hay que transformar la parte fraccionaria como si fuera un nmero
entero. Por ejemplo, transformar 0101011 en 43 como si fuera un entero.
Primero, cuente el nmero de posiciones de la fraccin y eleve el nmero 2
a esa potencia. As, el nmero de posiciones es 7 y 2 elevado a la sptima
potencia, o 2 7, es 128. Dividiendo 43 entre 128 se obtiene
el mismo
valor que obtuvimos sumando las fracciones separadas. La figura 8.4
tra este procedimiento.
www.FreeLibros.me
43 CUANDO CONVERTIMOS
1
0 111 . 0 1 0 1 0 11
PORCION
ENTERA
PORCION
FRACCIONARIA
www.FreeLibros.me
RESTA
0000111101010101
.
1110000101000001
(-7870.0625)
ACARREO
NEGATIVO
COMPLEMENTO
A
Figura 8. 6.
102
www.FreeLibros.me
Factor de escala
Otro mtodo emplea un punto lijo menos obvio. Este mtodo es parecido
al utilizado por la Balanza Binaria Mark 1 de
A cada nmero se le
aplica un cierto factor de escala. El punto binario, aunque no se define con
tanta precisin como cuando se situaba entre dos bytes, est ah en la mente
del programador.
He aqu un ejemplo. Supongamos que utilizamos nmeros de 16 bits.
Decidimos que queremos tener cuatro bits fraccionarios. Esta decisin se
basa en nuestra exigencia de resolucin. Sabemos que cuatro bits fraccionarios nos permitirn obtener
del valor actual, lo que se ajusta a
nuestras necesidades.
La apariencia de nuestros nmeros con un factor de escala de 16
tendr el aspecto que muestra la figura 8.7. Hay doce bits de entero, un
punto binario invisible entre los bits 4 y 3, y cuatro bits de fraccin. El
mximo nmero positivo que podemos manejar es 01111111 11111111, que
es
el mximo nmero negativo que podemos procesar es
-2048.0000 que es 10000000 00000000.
PUNTO BINARIO
INVISIBLE
SIGNO
15
14
13
12
11
10
0111111111111111
0 1 1 1 1 11 1 1 11 1 . 11 1 1
0000000000011111
0 0 0 0 0 00 0 0 00 0 . 11 1 1
1111111111111111
= 111111111111.1111
1111111111110000
= 111111111111.0000
=-1.0
1000000000000000
=-2048.0
1 0 0 0 0 00 0 0 00 0 . 00 0 0
y, despus, multiplicando por 16. Introduciendo 1000.55, por ejemplo, resulta 16008.8. Truncamos el
(lo quitamos) e introducimos el nmero
16008 como un nmero binario de 16 bits. (El nmero reconvertido es
= 1000.5, perdiendo, por tanto, algo de precisin, como esperbamos.) Otros nmeros se escalan de la misma forma.
Despus, seguimos adelante y sumamos, restamos, multiplicamos y dividimos esos nmeros en cualquier operacin que queramos. Aqu aparece
el obstculo. Si sumamos o restamos nmeros modificados de esta forma,
el punto binario queda
en su posicin sin problema.
embargo,
la multiplicacin y la divisin mueven el punto binario! La figura 8.8 muestra
algunos ejemplos. Tenemos que seguir la pista al punto en la multiplicacin y divisin. Cada multiplicacin mueve el punto del resultado dos posiciones ms a la izquierda. Cada divisin mueve el punto dos posiciones ms
a la derecha.
Al final del proceso, despus que la colocacin del punto ha sido determinada por la multiplicacin y por la divisin, reconvertimos los nmeros
en los valores actuales,
por 16. Como multiplicar y dividir por
16 se puede hacer fcilmente por medio de cuatro desplazamientos de un
bit, la conversin y reconversin son sencillas. La figura 8.9 muestra un
tpico proceso para nmeros en este formato.
Aunque tener que seguir la pista del punto binario es aburrido, la ventaja de este mtodo es que podemos operar con las partes fraccionaria y
entera de los nmeros mixtos al mismo tiempo, sin tener que procesar la
parte fraccionaria separadamente y propagar el acarreo a la parte entera.
Utilice esta aproximacin para cualquier proceso que requiera una serie
lija de operaciones cuyo nmero sea reducido.
Conversin de datos
Si ha ledo cuidadosamente este captulo, probablemente se le plantear
una pregunta:
se pasan los datos en el formato de caracteres del
mundo exterior a la forma binaria, escalada o no, y cmo se reconvierten
despus en una forma adecuada para mostrarse en una pantalla o en una
impresora? Responderemos a esta pregunta en el prximo captulo. Mientras tanto, hemos incluido algunos ejercicios de autoevaluacin sobre fracciones y factores de escala.
104
www.FreeLibros.me
ORIGINALES
5.25
2.5
0101.01
0010.10
(5.25
X 4 =
(2.5 X 4 =
SUMA
010101
001010
011111 =
0111.11
7.75
010101
001010
001011 =
0010.11
2.75
RESTA
MULTIPLICACION
010101
001010
0101010
101010
11010010
=
=
=
1101.0~
15.125
10
001010
=
= 10.00
Figura 8.8.
= 2.0
www.FreeLibros.me
INTRODUCCION Y
MULTIPLICACION
POR
INTRODUCCION
-00100100.110
0000001001001 100
+ 2 0 . 2 5 - 10100.01
X
00000001010001 OO
16
=
ESCALADO)
16
ESCALADO)
MULTIPLICACION
0000001001001100
0000000101000100
000000100100110000
0000001001001100000
00000010010011000
0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 ~
MOVIMIENTO DEL PUNTO
PARA MULTIPLICAR
RECONVERSION
744.1875
Figura 8.9.
Ejercicios
son las fracciones decimales equivalentes a:
son los nmeros decimales equivalentes a los siguientes nmeros binarios mixtos con signo?
00101110.1011;
106
www.FreeLibros.me
10110111.1111
-99
nmeros de-
1010110101101110
107
www.FreeLibros.me
Transformaciones
ASCII
Hasta aqu hemos hablado mucho acerca de procesar datos binarios
en diversos formatos. Pero,
entran los datos en el ordenador? Ciertamente, algunos se almacenan en el programa como constantes, pero otros
deben introducirse desde el mundo real por medio de un teclado o terminal
y, despus, mostrarse en pantalla o por impresora. En este captulo veremos
cmo los datos del mundo real se transforman en su representacin binaria
y viceversa.
Big Ed
el inventor
Big Ed acababa de abrir el restaurante. Estaba ocupado preparndose
para recibir al batalln hambriento de ingenieros, programadores, ejecutivos y cientficos procedentes de las muchas industrias de microordenadores y semiconductores de los alrededores.
tarde?, buf un hombre bajito y gordo, con un traje manchado
de tiza y una pajarita.
hola!
para qu?
Para la comida. Quera llegar aqu a tiempo para comer con toda la
gente de las compaas de microordenadores.
109
www.FreeLibros.me
110
www.FreeLibros.me
Cdigos ASCII
Como debera haber deducido de lo anterior, los cdigos ASCII son
un conjunto estndar de cdigos de caracteres de 7 bits, que se utilizan en los
dispositivos perifricos para ordenadores, incluyendo microordenadores. Los
cdigos ASCII se muestran en la figura 9.1. El bit ms significativo para
DIGITO HEXADECIMAL
MAS SIGNIFICATIVO
OX
1X
2X
3X
4X
5X
6X
7X
x1
x2
x3
X4
x5
DIGITO
HEXADECIMAL
MENOS
SIGNIFICATIVO
X6
x7
X8
x9
XA
xc
XD
XE
XF
LF=SALTO DE LINEA
CR
DE CARRO
VARIAN
Figura 9.1. Cdigos ASCII
111
www.FreeLibros.me
33
32
37
2E
BYTE
0
Figura 9.2.
33
32
31
www.FreeLibros.me
Por supuesto, queda mucho por decir acerca del establecimiento de indicadores de la entrada en la memoria temporal, obtener el carcter, buscar
un valor vlido entre 30 y
pasando por alto cualquier prefijo de
signo, etc., pero ste es el algoritmo de la transformacin general. La figura 9.3 muestra un ejemplo de esta transformacin.
Este esquema de conversin puede emplearse para cualquier valor entero
de entrada, si bien los valores mayores presentarn problemas a la hora de
almacenar el producto parcial entero en los registros de una sola vez.
www.FreeLibros.me
16
BITS
PRODUCTO
PARCIAL
-SUMA
0000000000000001
x10
0000000000001010
1x10=10
- S UM A
x10
13 x1 0 =1 3 0
- S U M A
5 -
x10
0000010101000110
- S U M A
13 5 x10 = 1 35 0
0000010101001000
NEGADO
PARA-
1111101010111000
-1352
114
www.FreeLibros.me
2 3 4,
CONVERTIR
COMO ENTERO
1101
0010
CONVERTIR
COMO ENTERO
DIVIDIR POR
DE POSICIONES EN LA FRACCION
00110101
10000111
0000010011010010.10000111
Figura 9.4. Paso de ASCII a fraccin binaria
www.FreeLibros.me
0101000011010101
NUMERO ORIGINAL
32
30
36
39
35
Figura 9.5.
El siguiente paso es una divisin sucesiva por diez, yendo los restos a una
memoria temporal de impresin en orden inverso. Cuando el cociente es cero,
la divisin se completa y todos los restos estn en la memoria temporal.
Despus, cada resto se transforma en ASCII sumndole 30H. El resultado
es un dgito ASCII de 0 a 9. Despus de transformar el ltimo dgito, se
almacena un signo + o
al principio de la memoria temporal de impresin, dependiendo del valor inicial. La lnea de caracteres ASCII puede imprimirse llamando a una rutina de impresin.
116
www.FreeLibros.me
117
www.FreeLibros.me
1 0 1 1 0 .
0 1
= 22.8125
1 3 x1 0 0 0 = 1 3 0 0 0
CONVERTIR POR
EL
DE
LOS ENTEROS
CONVERTIR POR EL
DE LOS ENTEROS
32
32
2E
38
31
32
PUNTO DECIMAL
Figura 9.6. Paso de binario a fraccin ASCII
Ejercicios
1.
2.
1011.59
118
www.FreeLibros.me
nmeros
1 0
Nmeros en
punto flotante
Los nmeros en punto flotante de los microordenadores expresan valores
en notacin
donde cada uno est formado por una mantisa y u n a
potencia de dos. En este captulo veremos cmo se desarrollan las operaciones en punto flotante.
www.FreeLibros.me
. . - - - -
0 000 1111
11011011
PI EN NOTACION
EN PUNTO FLOTANTE
122
www.FreeLibros.me
s!
es pi en notacin en punto flotante!
Los ingenieros se agruparon con excitacin en torno al mensaje. Al
cabo de los diez minutos siguientes recibieron algunas otras series.
dice ahora?, pregunt uno de
ingenieros.
No s; es diferente del resto.
espera! Esto es ASCII. Se lee...
eeeh...
LEER ESTO? Mensaje de vuelta: SI.
El ingeniero de la linterna respondi con un SI en ASCII.
dice ahora?, pregunt uno de los ingenieros, cuando su compaero transform el mensaje recibido en un texto.
Parece como un pedido para llevar, exclam Ed, mirando por encima
del hombro del ingeniero que sostena el texto. CUATRO SANDWICHES DE REUBEN, DOS DE PATATAS FRITAS, CUATRO
COLAS. No hay que preguntarse por qu pararon aqu. Al fin y al cabo,
un cliente es un cliente...
Ed volvi hacia la puerta de su restaurante, y sac las llaves para
abrirla...
www.FreeLibros.me
luego debe haber 1000 x 1000 metros cuadrados en un kilmetro cuadrado. Vamos a pasar 1000 a notacin cientfica antes de continuar el proceso.
100.0 x
1.000 x
1= 10.00 x
=
x
x
1521000 x 10 3 = 15210000 x 10 2 =
152100000 x
1 = 1521000000 x
0=
de la cabeza de un alfiler =
x
0 = 0.00965 x
1=
0.0965 x
-2
x
-3 =
9.65 x
-4
124
www.FreeLibros.me
x 10
5)
Se aplica aqu la regla de que, si las bases son iguales, podemos restar
los exponentes para dividir:
Nmero de ngeles sobre la cabeza =
x 10
4 + 5) =
x 10 1 = 1.06 x
1=
6 x 10 0 = 10.6 ngeles
El uso de la notacin cientfica estndar ha simplificado mucho los
clculos, puesto que todos los valores estaban en formato estndar en base 10,
y podemos sumar exponentes para multiplicar y restarlos para dividir.
Resulta que sumar y restar dos nmeros en notacin cientfica es ms
complicado, en algunos aspectos, que multiplicarlos. Consideremos los dos
nmeros
y
En notacin cientfica, son:
0.09375 = 0.09375 x
- 2
Pues bien; a la hora de sumar o restar dos nmeros en notacin cientfica, sus exponentes deben ser los mismos. Uno u otro nmero, por tanto,
debe ajustarse para que ambos exponentes sean iguales. Podemos hacer esto,
bien moviendo el punto decimal de 9.375 x 10
-2 hacia la izquierda y
sumando uno para que d
x
1, o bien moviendo el punto
decimal de 1.0 x 10
1 a la derecha y restando uno para de d 10.0 x
x
-2. Una vez igualados los exponentes, podemos sumar o restar.
9.375
2
+ 10.0 x
-2
19.375 x
-2 =
1.9375 x
-1=
0.19375 x 10 0 = 0.19375
125
www.FreeLibros.me
www.FreeLibros.me
EXPONENTE EN
"EXCESO 128"
VALOR
DE
AJUSTAR
POR RESTA
DE -128
11111111
01111111
11010000
01010000
10000101
00000101
10000000
00000000
01111111
11111111
-1
01111110
11111110
-2
00001111
10001111
-112
10000000
-128
Figura 10.2.
POTENCIA
DE DOS
EXPONENTE
,
23
0
1
24
8
32
Figura 10.3.
BITS
BITS
BITS
127
www.FreeLibros.me
Para ello, hay que guardar tantos bits significativos como sea posible.
Puesto que tenemos un nmero limitado de bits para almacenar la mantisa,
debemos deshacernos de los bits despreciables y conservar slo los significativos. Esto lo hacemos normalizando la mantisa, de modo que el primer 1 se sita inmediatamente a la derecha de un supuesto punto
binario, justamente junto al bit de la mantisa, como muestra la figura 10.4.
De esta forma, aseguramos la mxima precisin, ya que no hay ceros despreciables junto al primer 1, ni parte truncada de la mantisa al final. El primer
bit de la mantisa, por tanto, es siempre un 1.
PUNTO BINARIO ASUMIDO
MANTISA
23
EXPONENTE
0
1
SIEMPRE UN BIT 1 (NORMALIZADO)
Figura 10.4.
Veamos. Tenemos ahora un byte para el exponente y una mantisa normalizada de tres bytes.
se nos ha olvidado? Resulta que podemos
expresar nmeros positivos, pero no nmeros con signo.
bit de signo
ha desaparecido! Definitivamente, necesitamos un bit de signo, a menos
que prefiramos que nuestros usuarios del BASIC se limiten exclusivamente
a los nmeros positivos...
Una solucin es sta: como todo nmero en punto flotante va a ser
forzosamente normalizado,
qu no dejar que el primer dgito de la
mantisa represente el bit de signo ? El resto del nmero se almacenar en
complemento a dos. Nos limitaremos a despreciar el primer 1 cuando sepamos lo que es. El formato final de un clculo en punto flotante tiene
la forma que muestra la figura 10.5.
Se observar en la figura 10.5 que hay dos mtodos para almacenar
nmeros en punto flotante. Esto se debe a la distinta manera en que los
microprocesadores almacenan valores de 16 bits. Si los datos se almacenan
en la memoria en dos almacenes de 16 bits (microprocesador Z-80), el
formato presenta primero el byte menos significativo, seguido del ms significativo. Esto quiere decir que el nmero en punto flotante se almacena
de la manera siguiente: byte menos significativo de la mantisa, el siguiente
byte ms significativo de la mantisa, byte ms significativo de la mantisa
y byte del exponente.
128
www.FreeLibros.me
PUNTO BINARIO
ASUMIDO
EXPONENTE
MANTISA
BYTE MENOS
SIGNIFICATIVO
BYTE 0
EXPONENTE
BYTE MAS
SIGNIFICATIVO
BYTE 0
EXPONENTE
Figura 10.5.
Versin
La figura 10.6 muestra el ejemplo -tres ejemplos- de constantes almacenadas en la memoria. Es conveniente estudiarlas para aprender mejor cmo se descifran formatos en punto flotante.
www.FreeLibros.me
CONSTANTE =
01001010
11010111
00111011
01111000
00111010
11010111
01001010
01111000
01111000
11111000
POSITIVO
1 BIT
10111010
10000000
1
11010111
01001010
=
730
= 2.85 X
RESULTADO
A) Primer ejemplo.
CONSTANTE =
00000000
0000008 1H
00000000 00000000
10000001
.
SIGNO = 0 =
POSITIVO
1 BIT
10000000
10000001
00000001
00000000
,
10000000
= 2
00000000
RESULTADO
B) Segundo ejemplo.
Figura 10.6. Constantes en punto flotante de la memoria
130
www.FreeLibros.me
CONSTANTE = 64269987H
0 11 0 0 1 0 0 0 0 1 0 0 11 0 1 0 0 11 0 0 1 1 0 0 0 0 111
1 0 0 11 0 0 1 0 0 1 0 0 11 0 0 11 0 0 1 0 0 1 0 0 0 0 111
10000111
10000000
0 0 0 0 0 111 =
NEGATIVO
1 BIT
1 0 0 11 0 0 1 0 0 1 0 0 11 0 0 11 0 0 1 0 0
.
,598 X 128 =
= RESULTADO
C) Tercer ejemplo.
Fig. 10.6
4 escalados por 16). Por consiguiente, por cada dos bytes sumados a la
mantisa, se aaden alrededor de dgitos decimales.
Un formato de punto flotante en doble precisin que se halla en algunas
versiones de BASIC aade cuatro bytes ms a la mantisa, para obtener
una precisin total de unos 17 dgitos decimales, al tiempo que mantiene
el mismo rango de nmeros. Este esquema se muestra en la figura 10.7.
www.FreeLibros.me
PUNTO BINARIO
ASUMIDO
MANTISA
EXPONENTE
55 54
07
X
SEGUNDO BIT DE LA MANTISA
BIT DE SIGNO DE LA MANTISA
56 BITS
8 BITS
64 BITS
Figura 10.7. Formato de punto flotante en doble precisin
Ejercicios
1.
2.
186,000;
x 200,000 = ?
132
www.FreeLibros.me
1,
-5,
-40,
2 128,
-129
133
www.FreeLibros.me
Apndice A
Soluciones de
los ejercicios
CAPITULO 1
1.
2.
3.
4.
5.
11111111, 1110101001100000.
00010101.
15, 63, 255, 65535. (2 n)- 1.
CAPITULO 2
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ll.
www.FreeLibros.me
CAPITULO 3
1.
2.
3.
4.
5.
6.
7.
1 + 3
15
21
No es necesario ll 1, es necesario
11111111,
00000000011111111
1111111011010100
305).
1111111011010100
(-295).
(111111).
(1011).
86, es necesario
128.
11 1 1 11 1 1 1 ~
1111111111111011
1111111011001111
1111111111111011
1111111011011001
CAPITULO 4
1.
CAPITULO 5
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ll.
01010110
c =o 01011111, c= 1 00000000.
00010111
11000000 c=o.
00111111 C = 1 (antes = + 127 despus =
00101101 C 0 (antes
=
despus =
C = 1 (antes =
123 despus +
01000000 C = 0 (antes = 128 despus = + 64).
11111110 C = 0 (antes = + 127 despus =
10110100 C = 0 (antes
despus =
00001010 C = 1 (antes =
123 despus +
00000000 C = 1 (antes = 128 despus = 0).
00111111 (antes = + 127 despus = +
11000010 (antes
123 despus
=
11000000 (antes = 128 despus = 64).
136
www.FreeLibros.me
CAPITULO 6
1.
2.
3.
1. 11111111
2. 00100010
3. 00000000
4. 11000000
5. 00011111
11111111
11111111 o
00000000 01011010
11111110
11011001
01010111
01000100
11010101
11011101
01000000.
11111111.
10000001.
10111111 c = 1.
CAPITULO 8
1.
2.
3. 46.6875,
73.0625.
4. 0110010000000000,
5. 11.5, 2642.25.
CAPITULO 9
1.
2.
-098, -01.52,
2B 39 35 38 2E 32. 2D 31 30 31 31 2E 35 39.
CAPITULO 10
1.
2.
3.
4.
3.1416 x
3.14 x 1.52 x
3.1 x
10000000,
72.0, -73.75.
9.3 x
-1.86 x
1.35 x
-4 x 2.0 x
5 = 9.5 x
1
x
-5 = 2.0 x
ll.
01111011, 10100011, 01011000, imposible,
-5.
imposible.
137
www.FreeLibros.me
Apndice B
Conversiones binario,
decimal
hexadecimal
Hex.
Binario
0000000000
0000000001
0000000010
0000000011
0000000100
0000000101
0000000110
0000000111
0000001000
0000001001
0000001010
0000001011
0000001100
0000001101
0000001110
0000001111
0000010000
0000010001
0000010010
0000010011
0000010100
0000010101
0000010110
0000010111
0000011000
0000011001
0000
0001
0002
0003
0004
0005
0006
0007
0010
0011
0012
0013
0014
0015
0016
0017
0020
0021
0022
0023
0024
0025
0026
0027
0030
0031
1 001
2 002
3 003
4 004
5 005
6 006
7 007
8 008
9 009
10 OOA
ll OOB
12
13 OOD
14
15 OOF
16 010
17 011
18 012
19 013
20 014
21 015
22 016
23 017
24 018
25 019
Binario
0000011010
0000011011
0000011100
0000011101
0000011110
0000011111
0000100000
0000100001
000000010
0000100011
0000100100
0000100101
0000100110
0000100111
0000101000
0000101001
0000101010
0000101011
0000101100
0000101101
0000101110
0000101111
0000110000
0000110001
0000110010
0000110011
H e x.
0032
0033
0034
0035
0036
0037
0040
0041
0042
0043
0044
0045
0046
0047
0050
0051
0052
0053
0054
0055
0056
0057
0060
0061
0062
0063
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
020
021
022
023
024
025
026
027
028
029
02B
02E
02F
030
031
032
033
Binario
0000110100
0000110101
0000110110
0000110111
0000111000
0000111001
0000111010
0000111011
0000111100
0000111101
0000111110
0000111111
0001000000
0001000001
0001000010
0001000011
0001000100
0001000101
0001000110
0001000111
0001001000
0001001001
0001001010
0001001011
0001001100
0001001101
0064
0065
0066
0067
0070
0071
0072
0073
0074
0075
0076
0077
0100
0101
0102
0103
0104
0105
0106
0107
0110
0112
0113
0114
0115
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
034
035
036
037
038
039
03A
03D
03E
03F
040
041
042
043
044
045
046
047
048
049
139
www.FreeLibros.me
Binario
Hex.
0001001110 0116
78 04E
0001001111 0117
79 04F
0001010000 0120
80 050
0001010001 0121
81 051
82 052
0001010010 0122
0001010011 0123
0001010100 0124
85 055
0001010101 0125
86 056
0001010110 0126
87 057
0001010111 0127
88 058
0001011000 0130
89 059
0001011001 0131
90
0001011010 0132
91 05B
0001011011 0133
92
0001011100 0134
93
0001011101 0135
94 05E
0001011110 0136
95 05F
0001011111 0137
96 060
0001100000 0140
97 061
0001100001 0141
98 062
0001100010 0142
99 063
0001100011 0143
100 064
0001100100 0144
101 065
0001100101 0145
102 066
0001100110 0146
103 067
0001100111 0147
104 068
0001101000 0150
105 069
0001101001 0151
106
0001101010 0152
107
0001101011 0153
108
0001101100 0154
109
0001101101 0155
110 06E
0001101110 0156
111 06F
0001101111 0157
112 070
0001110000 0160
113 071
0001110001 0161
114 072
0001~10010 0162
115 073
0001110011 0163
116 074
0001110100 0164
117 075
0001110101 0165
118 076
0001110110 0166
119 077
0001110111 0167
120 078
0001111000 0170
121 079
0001111001 0171
122
0001111010 0172
123 07B
0001111011 0173
124
0001111100 0174
125
0001111101 0175
126
0001111110 0176
0001111111 0177 127
0010000000 0200 128 080
129 081
0010000001 0201
130 082
0010000010 0202
131 083
0010000011 0203
0010000100 0204
132 084
0010000101 0205
133 085
Binario
0010000110
0010000111
0010001000
0010001001
0010001010
0010001011
0010001100
0010001101
0010001110
0010001111
0010010000
0010010001
0010010010
0010010011
0010010100
0010010101
0010010110
0010010111
0010011000
0010011001
0010011010
0010011011
0010011100
0010011101
0010011110
0010100000
0010100001
0010100010
0010100011
0010100100
0010100101
0010100110
0010100111
0010101000
0010101001
0010101010
0010101011
0010101100
0010101101
0010101110
0010101111
0010110000
0010110001
0010110010
0010110011
0010110100
0010110101
0010110110
0010110111
0010111000
0010111001
0010111010
0010111011
0010111100
0010111101
Hex.
Binario
140
www.FreeLibros.me
Hex.
Hex.
Binario
0011110110 0366
0011110111 0367
0011111000 0370
0011111001 0371
0011111010 0372
0011111011 0373
0011111100 0374
0011111101 0375
0011111110 0376
0011111111 0377
0100000000 0400
0100000001 0401
0100000010 0402
0100000011 0403
0100000100 0404
0100000101 0405
0100000110 0406
0100000111 0407
0100001000 0410
0100001001 0411
0100001010 0412
0100001011 0413
0100001100 0414
0100001101 0415
0100001110 0416
0100001111 0417
0100010000 0420
0100010001 0421
0100010010 0422
0100010011 0423
0100010100 0424
0100010101 0425
0100010110 0426
0100010111 0427
0100011000 0430
0100011001 0431
0100011010 0432
0100011011 0433
0100011100 0434
0100011101 0435
0100011110 0436
0100011111 0437
0100100000 0440
0100100001 0441
0100100010 0442
0100100011 0443
0100100100 0444
0100100101 0445
0100100110 0446
0100100111 0447
0100101000 0450
0100101001 0451
0100101010 0452
0100101011 0453
0100101100 0454
0100101101 0455
246 OF6
247
246
251
252
253
254
255
256
257
256
259
Binario
0100101110 0456
0100101111
0100110000
0100110001
0100110010
250
0100110011
0100110100
0100110101
0100110110
0100110111
0100111000
100
101
0100111001
102
0100111010
0100111011
103
260 104
0100111100
261 105
0100111101
262 106 0100111110
263 107 0100111111
264 106
0101000000
0101000001
265 109
266
0101000010
267
0101000011
0101000100
266
0101000101
269
0101000110
270
0101000111
271
272 110
0101001000
273 111
0101001001
274 112
0101001010
275 113
0101001011
276 114
0101001100
0101001101
277 115
276 116
0101001110
279 117
0101001111
0101010000
260
261 119
0101010001
262
0101010010
0101010011
263
0101010100
0101010101
266
0101010110
267
0101010111
266 120
0101011000
269 121
0101011001
290 122
0101011010
291 123
0101011011
292 124
0101011100
293 125
0101011101
294 126
0101011110
295 127
0101011111
296 126
0101100000
297 129
0101100001
296 12A
0101100010
299 12B
0101100011
300 12c
0101100100
301 12D
0101100101
0457
0460
0461
0462
0463
0464
0465
0466
0467
0470
0471
0472
0473
0474
0475
0476
0477
0500
0501
0502
0503
0504
0505
0506
0507
0510
0511
0512
0513
0514
0515
0516
0517
0520
0521
0522
0523
0524
0525
0526
0527
0530
0531
0532
0533
0534
0535
0536
0537
0540
0541
0542
0543
0544
0545
Binario
302
303
304
305
306
307
306
309
310
311
312
313
314
315
316
317
316
319
320
321
322
323
325
326
327
326
329
330
331
332
333
334
335
336
337
336
339
340
341
342
343
344
345
346
347
12E
12P
130
131
132
133
134
135
136
137
136
139
13A
13B
13C
13D
13E
13F
140
141
142
143
144
145
146
147
146
149
14A
14B
14C
14D
14E
14F
150
151
152
153
154
155
156
157
156
159
15c
349
350
351 15F
352 160
353 161
354 162
355 163
356 164
357 165
Hex.
www.FreeLibros.me
Hex.
Binario
0110011110
0110011111
0110100000
0110100001
0110100010
0110100011
0110100100
0110100101
0110100110
0110100111
0110101000
0110101001
0110101010
0110101011
0110101100
0110101101
0110101110
0110101111
0110110000
0110110001
0110110010
0110110011
0110110100
0110110101
0110110110
0110110111
0110111000
0110111001
0110111010
0110111011
0110111100
0110111101
0110111110
0110111111
0111000000
0111000001
0111000010
0111000011
0111000100
0111000101
0111000110
0111000111
0111001000
0111001001
0111001010
0111001011
0111001100
0111001101
0111001110
0111001111
0111010000
0111010001
0111010010
0111010011
0111010100
0111010101
0636
0637
0640
0641
0642
0643
0644
0645
0646
0647
0650
0651
0652
0653
0654
0655
0656
0657
0660
0661
0662
0663
0664
0665
0666
0667
0670
0671
0672
0673
0674
0675
0676
0677
0700
0701
0702
0703
0704
0705
0706
0707
0710
0711
0712
0713
0714
0715
0716
0717
0720
0721
0722
0723
0724
0725
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
lA6
lB4
lB8
la?
Binario
Hex.
142
www.FreeLibros.me
Binario
1000001110
1000001111
1000010000
1000010001
1000010010
1000010011
1000010100
1000610101
1000010110
1000010111
1000011000
1000011001
1000011010
1000011011
1000011100
1000011101
1000011110
1000011111
1000100000
1000100001
1000100010
1000100011
1000100100
1000100101
1000100110
1000100111
1000101000
1000101001
1000101010
1000101011
1000101100
1000101101
1000101110
1000101111
1000110000
1000110001
1000110010
1000110011
1000110100
1000110101
1000110110
1000110111
1000111000
1000111001
1000111010
1000111011
1000111100
1000111101
1000111110
1000111111
1001000000
1001000001
1001000010
1001000011
1001000100
1001000101
Hex.
Hex.
Binario
1001000110
1001000111
1001001000
1001001001
1001001010
1001001011
1001001100
1001001101
1001001610
1001001111
1001010000
1001010001
1001010010
1001010011
1001010100
1001010101
1001010110
1001010111
1001011000
1001011001
1001011010
1001011011
1001011100
1001011101
1001011110
1001011111
1001100000
1001100001
1001100010
1001100011
1001100100
1001100101
1001100110
1001100111
1001101000
1001101001
1001101010
1001101011
1001101100
1001101101
1001101110
1001101111
1001110000
1001110001
1001110010
1001110011
1001110100
1001110101
1001110110
1001110111
1001111000
1001111001
1001111010
1001111011
1001111100
1001111101
1106
1107
1110
1111
1112
1113
1114
1115
1116
1117
1120
1121
1122
1123
1124
1125
1126
1127
1130
1131
1132
1133
1134
1135
1136
1137
1140
1141
1142
1143
1144
1145
1146
1147
1150
1151
1152
1153
1154
1155
1156
1157
1160
1161
1162
1163
1164
1165
1166
1167
1170
1171
1172
1173
1174
1175
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
246
247
248
249
24A
24C
24D
24E
24F
250
251
252
253
254
255
256
257
258
259
25A
25C
25D
25E
25F
260
261
262
263
264
265
266
267
268
269
26A
26B
26C
26D
26E
26F
270
271
272
273
274
275
276
277
278
279
27A
27B
27C
27D
Binario
1001111110
1001111111
1010000000
1010000001
1010000010
1010000011
1010000100
1010000101
1010000110
1010000111
1010001000
1010001001
1010001010
1010001011
1010001100
1010001101
1010001110
1010001111
1010010000
1010010001
1010010010
1010010011
1010010100
1010010101
1010010110
1010010111
1010011000
1010011001
1010011010
1010011011
1010011100
1010011101
1010011110
1010011111
1010100000
1010100001
1010100010
1010100011
1010100100
1010100101
1010100110
1010100111
1010101010
1010101011
1010101100
1010101101
1010101110
1010101111
1010110000
1010110001
1010110010
1010110011
1010110100
1010110101
Hex.
1176 638
1177 639 27F
1200 640 280
1201 641 281
1202 642 282
1203 643 283
1204 644 284
1205 645 285
1206 646 286
1207 647 287
1210 648 288
1211 649 289
1212 650 28A
1213 651 28B
1214 652 28C
1215 653 28D
1216 654 28E
1217 655 28F
1220 656 290
1221 657 291
1222 658 292
1223 659 293
1224 660 294
1225 661 295
1226 662 296
1227 663 297
1230 664 298
1231 665 299
1232 666 29A
1233 667 29B
1234 668 29c
1235 669 29D
1236 670 29E
1237 671 29F
1240 672 2A0
1241 673
1242 674
1243 675
1244 676
1245 677
1246 678
1247 679
1250 680
1251 681
1252 682 2AA
1253 683 2AB
1254 684 2X
1255 685
1256 686 2AE
1257 687 2AF
1260 688 2B0
1261 689 2Bl
1262 690
1263 691
1264 692
1265 693
Binario
Hex.
143
www.FreeLibros.me
Hex.
Binario
1011101110
1011101111
1011110000
1011110001
1011110010
1011110011
1011110100
1011110101
1011110110
1011110111
1011111000
1011111001
1011111010
1011111011
1011111100
1011111101
1011111110
1011111111
1100000000
1100000001
1100000010
1100000011
1100000100
1100000101
1100000110
1100000111
1100001000
1100001001
1100001010
1100001011
1100001100
1100001101
1100001110
1100001111
1100010000
1356
1357
1360
1361
1362
1363
1364
1365
1366
1367
1370
1371
1372
1373
1374
1375
1376
1377
1400
1401
1402
1403
1404
1405
1406
1407
1410
1411
1412
1413
1414
1415
1416
1417
1420
750 2EE
751 2EF
752 2F0
753
754
755
756
757
758
759
760
761
762 2FA
763
764
765 2FD
766 2FE
767 2FF
768 300
769 301
770 302
771 303
772 304
773 305
774 306
775 307
776 308
777 309
778 30A
779 30B
780 30C
781 30D
782 30E
783 30F
784 310
Binario
1100100110
1100100111
1100101000
1100101001
1100101010
1100101011
1100101100
1100101101
1100101110
1100101111
1100110000
1100110001
1100110010
1100110011
1100110100
1100110101
1100110110
1100110111
1100111000
1100111001
1100111010
1100111011
1100111100
1100111101
1100111110
1100111111
1101000000
1101000001
1101000010
1101000011
1101000100
1101000101
1101000110
1101000111
1101001000
1446
1447
1450
1451
1452
1453
1454
1455
1456
1457
1460
1461
1462
1463
1464
1465
1466
1467
1470
1471
1472
1473
1474
1475
1476
1477
1500
1501
1502
1503
1504
1505
1506
1507
1510
1100010010 1422
1100010101 1425
789 315
1101001100 1514
1101001101 1515
1101001111 1517
1101010000 1520
1
1
0
798 31E
1101010101
1101011000 1530
1101011001 1531
1101011110 1536
862 35E
806 326
1101011111 1537
863 35F
807 327
864 360
1101100000 1540
808 328
865 361
1101100001 1541
809 329
866 362
1101100010 1542
810 32A
867 363
1101100011 1543
811 32B
868 364
1101100100 1544
812 32C
869 365
1101100101 1545
813 32D
870 366
1101100110 1546
814 32E
871 367
1101100111 1547
815 32F
872 368
1101101000 1550
816 330
873 369
1101101001 1551
817 331
874 36A
1101101010 1552
818 332
875 36B
1101101011 1553
819 333
876 36C
1101101100 1554
820 334
877 36D
1101101101 1555
821 335
878 36E
1101101110 1556
822 336
1101101111 1557
879 36F
823 337
880 370
1101110000 1560
824 338
881 371
825 339
1101110001 1561
882 372
1101110010 1562
826 33A
883 373
827 33B
1101110011 1563
828
884 374
1101110100 1564
885 375
829 33D
1101110101 1565
830 33E
886 376
1101110110 1566
831 33F
377
1101110111 1567
888 378
1101111000 1570
832 340
833 341
889 379
1101111001 1571
834 342
890 37A
1101111010 1572
891
1101111011 1573
835 343
892 37C
836 344 1101111100 1574
837 345
1101111101 1575
893 37D
894 37E
838 346 1101111110 1576
895 37F
839 347 1101111111 1577
896 380
840 348 1110000000 1600
841
1100100010 1442
1100010001
1 7 847 34F
1100011000 854
1430356 792
802 322 11
1101010110
842
34A
785 311526
421
01011010 1532
1 11010010 318
319
858 35A
01 1511 349 1100011001 1431
1101010001 71521 849
86 312
351
1100010011 1100011010 1432 794
1423
848 350787 3 31A 1101010010 152
13 1101001 2 850 352
1100011011 1433 795
011 1513 8 31B 1101010011 152
43 34B
3 851 353
1100010100 1100011100 1434 796
1424 788 3 31c 1101010100 152
14 844 34C 4 852 354
1100011101 1435 797
856 358
1100010110 1 31D 1525 853 355
426 790 31 1100011111 1437 799
10 1516
Hex.
Binario
11010011 31F
1101010111 1527
84
855 357
1100100000 1440
6 34E
320
1100010111 1 1100100001 1441
427 791 31 321 857 359
800
801
1110000001
1110000010
1110000011
1110000100
1110000101
1110000110
1110000111
1110001000
1110001001
1110001010
1110001011
1110001100
1110001101
1110001110
1110001111
1110010000
1110010001
1110010010
1100100011
1100100100
1100100101
845
1601
1602
1603
1604
1605
1606
1607
1610
1611
1612
1613
1614
1615
1616
1617
1620
1621
1622
1443
1444
1445
897
898
899
900
901
902
903
904
905
803 323
804 324
805 325
1101011011 1533
1101011100 1534
1101011101 1535
144
www.FreeLibros.me
381
382
383
384
385
386
387
388
906 38A
907 38B
908
909 38D
910 38E
911 38F
912 390
913 391
914 392
859
860 35C
861 35D
1110010011 1623
1110010100 1624
1110010101 1625
915 393
916 394
917 395
Hex.
Binario
1110010110
1110010111
1110011000
1110011001
1110011010
1110011011
1110011100
1110011101
1110011110
1110011111
1110100000
1110100001
1110100010
1110100011
1110100100
1110100101
1110100110
1110100111
1110101000
1110101001
1110101010
1110101011
1110101100
1110101101
1110101110
1110101111
1110110000
1110110001
1110110010
1110110011
1110110100
1110110101
1110110110
1110110111
1110111000
1110111001
1626
1627
1630
1631
1632
1633
1634
1635
1636
1637
1640
1641
1642
1643
1645
1646
1647
1650
1651
1652
1653
1654
1655
1656
1657
1660
1661
1662
1663
1664
1665
1666
1667
1670
1671
918
919
920
921
922
396
397
398
399
39A
924 39c
39D
926 39E
927 39F
928 3A0
929 3Al
930
931
932
933
934
935
936
937
938
939 3AB
940
941 3AD
942 3AE
943 3AF
944 3B0
945
946
947
948
949
950
951
952
953
Binario
1110111010
1110111011
1110111100
1110111101
1110111110
1110111111
1111000000
1111000001
1111000010
1111000011
1111000100
1111000101
1111000110
1111000111
1111001000
1111001001
1111001010
1111001011
1111001100
1111001101
1111001110
1111001111
1111010000
1111010001
1111010010
1111010011
1111010100
1111010101
1111010110
1111010111
1111011000
1111011001
1111011010
1111011011
1111011100
1111011101
Binario
1672 954
1673 955 3BB
1674 956
1675 957
1676 958 3BE
1677 959 3BF
1700 960
1701 961
1702 962
1703 963
1704 964
1705 965
1706 966
1707 967
1710 968
1711 969
1712 970
1713 971
1714 972
1715 973
1716 974
1717 975 3CF
1720 976 3D0
1721 977 3Dl
1722 978
1723 979
1724 980
1725 981
1726 982
1727 983
1730 984
1731 985
1732 986
1733 987
1734 988
1735 989 3DD
Hex
145
www.FreeLibros.me
Apndice C
Tabla de conversin
de nmeros en
complemento a dos
Complemento
dos
Complemento
dos
Complemento
dos
11111111
11111110
11111101
11111100
-1
-2
11111011
11111010
11111001
11111000
11110111
11110110
11110101
11110100
11110011
11110010
11110001
11110000
11101111
11101110
11101101
11101100
11101011
11101010
11101001
11101000
11100111
11100110
-5
-6
-7
-8
-9
-10
-11
-12
-13
-14
-15
-16
-17
-18
-19
-20
-21
-22
-23
-24
-25
-26
11100101
11100100
11100011
11100010
11100001
11100000
11011111
11011110
11011101
11011100
11011011
11011010
11011001
11011000
11010111
11010110
11010101
11010100
11010011
11010010
11010001
11010000
11001111
11001110
11001101
11001100
-27
-28
-29
-30
-31
-32
-33
-34
-35
-36
-37
-38
-39
-40
-41
-42
-43
-44
-45
-46
-47
-48
-49
-50
-51
-52
11001011
11001010
11001001
11001000
11000111
11000110
11000101
11000100
11000011
11000010
11000001
11000000
10111111
10111110
10111101
10111100
10111011
10111010
10111001
10111000
10110111
10110110
10110101
10110100
10110011
10110010
Complemento
dos
-53
-54
-55
-56
-57
-58
-59
-60
-61
-62
-63
-64
-65
-66
-67
-68
-69
-70
-71
-72
-73
-74
-75
-76
-77
-78
10110001
10110000
10101111
10101110
10101101
10101100
10101011
10101010
10101001
10101000
10100111
10100110
10100101
10100100
10100011
10100010
10100001
10100000
10011111
10011110
10011101
10011100
10011011
10011010
10011001
10011000
-79
-80
-81
-82
-83
-84
-85
-86
-87
-88
-89
-90
-91
-92
-93
-94
-95
-96
-97
-98
-99
-100
-101
-102
-103
-104
147
www.FreeLibros.me
Complemento
10010111
10010110
10010101
10010100
10010011
10010010
Complemento
dos
Complemento
dos
-105
-106
-107
-108
-109
-110
10010001
10010000
10001111
10001110
10001101
10001100
-111
-112
-113
-114
-115
-116
10001011
10001010
10001001
10001000
10000111
10000110
www.FreeLibros.me
Complemento
dos
-117
-118
-119
-120
-121
-122
10000101
10000100
10000011
10000010
10000001
10000000
-123
-124
-125
-126
-127
-128
Glosario
ACARREO
Suma de un dgito 1 a la posicin superior siguiente
del bit o a indicador de acarreo.
ACARREO NEGATIVO
Un bit 1 que se resta del dgito binario superior siguiente.
ACUMULADOR (accumulator).
Registro principal de un microprocesador utilizado para operaciones aritmticas, lgicas, desplazamientos y
otras. El microprocesador Z-80 posee uno (registro A), mientras que el
microprocesador 6809 tiene dos (registros A y B).
ALGORITMO (algorithm).
Descripcin paso a paso de un proceso para
ejecutar una tarea.
ASCII
Cdigo estndar para la representacin de caracteres en
ordenadores y en sus equipos perifricos. Su significado es
Standard
for Information Interchange.
BASE (base). Punto de partida para la representacin de un nmero en
forma escrita, donde los nmeros se expresan como mltiplos de potencias del valor de la base.
BINARIO (binary).
Representacin de nmeros en base dos, donde
todo nmero se expresa por combinacin de los dgitos binarios 0 y 1.
BIT (bit). Contraccin de dgito binario
digit).
149
www.FreeLibros.me
BIT DE SIGNO
bit). Bit ms a la izquierda (posicin 15 7) de
un nmero en complemento a dos. Si es un cero, el signo del nmero es
positivo. Si es un uno, el signo del nmero es negativo.
BIT MAS SIGNIFICATIVO
bit). El bit de ms a la
izquierda en un valor binario, representa el orden superior de potencias
de dos. En notacin en complemento a dos este bit es el signo.
BIT MENOS SIGNIFICATIVO
bit). El bit ms a la derecha de un valor binario, representado por 2 0.
BITS SIGNIFICATIVOS
bits). Nmero de bits en un valor
binario, despus de quitar los ceros a la izquierda.
BYTE (byte). Coleccin de 8 bits. Cada posicin de memoria en la mayora de los microordenadores tiene el tamao de un byte.
BYTE MAS SIGNIFICATIVO (most
byte). El byte de orden
superior. En el nmero
de mltiple precisin, los dgitos
hexadecimales A y 1 forman el byte ms significativo.
CLOBBER (clobber). Destruir el contenido de una memoria o de un
registro.
COCIENTE (quotient). Resultado de una divisin.
EXCESO A 128
128). Mtodo estndar para
poner el exponente en el BASIC de
El valor 128 se
aade a la potencia actual de dos y luego se almacena como un exponente en una representacin de punto flotante.
Ordenador britnico utilizado durante la Segunda Guerra Mundial para descifrar los cdigos germanos Enigma.
COMPLEMENTO A DOS (twos
Forma estndar de representar nmeros positivos y negativos en microordenadores.
DATOS (data). Trmino genrico que designa nmeros, operandos, instrucciones del programa, indicadores o cualquier representacin de informacin utilizando unos o ceros binarios.
DESPLAZAMIENTO
Valor con signo utilizado en lenguaje mquina, que se emplea para definir una direccin de memoria.
DESPLAZAMIENTO ARITMETICO (urithmetic
Tipo de desplazamiento en el que un operando es movido a derecha o a izquierda
usando el bit de signo (desplazamiento a
derecha) o mantenindolo
(desplazamiento a la izquierda).
DESPLAZAMIENTO LOGICO
Tipo de desplazamiento
en el que un operando se desplaza a derecha o izquierda, con un cero
ocupando la posicin vacante del bit.
DESPLAZAMIENTO Y SUMA
and udd). Mtodo en el que la
multiplicacin se ejecuta por desplazamiento y suma del multiplicando.
150
www.FreeLibros.me
DIGITO BINARIO
digit). Los dos dgitos (0 y 1) utilizados
en notacin binaria. A menudo abreviados por bit.
DISPOSITIVOS PERIFERICOS (peripherical
Trmino genrico
para definir el equipo conectado a un ordenador, tal como teclados,
unidades de disco, magnetfonos de cassette, impresoras, tableros de
dibujo electrnicos, sintetizadores de voz, etc.
DIVIDENDO (dividend). Nmero por el que se divide al divisor. En
A es el dividendo.
DIVISION CON RECUPERACION (restoring
Divisin en la
que el divisor se recupera si la operacin no efecta ninguna iteracin. Tcnica comn de divisin en microordenadores.
DIVISOR (divisor). Nmero que va bajo el dividendo en una divisin.
En
B es el divisor.
DOBLAR Y SUMAR (double-dabble). Mtodo para convertir de binario
a representacin decimal por duplicacin del bit ms a la izquierda,
sumando el prximo bit y continuando hasta que se use el bit de ms a
la derecha.
ENIGMA (enigma). Mquina de claves alemana (Segunda Guerra Mundial).
EQUIPO PERFORADOR DE TARJETAS
equipment).
Dispositivos perifricos que permiten perforar o leer las tarjetas de
papel empleadas para almacenar caracteres o datos binarios.
ERROR DE DESBORDAMIENTO
error). Condicin que se da
cuando el resultado de una suma, resta u otra operacin aritmtica es
demasiado grande para poderlo meter en el nmero de bits que se le
asignaron.
EXPONENTE (exponent). En este libro, normalmente, la potencia de dos
de un nmero binario en punto flotante.
EXTENSION DEL SIGNO (sign extension). Extender el bit de signo
de un nmero en complemento a dos a la izquierda por duplicacin.
FACTOR DE ESCALA (scaling). Cantidad fija por la que hay que multiplicar un nmero de forma que pueda procesarse como un valor entero.
H
Sufijo para nmeros hexadecimales.
HEXADECIMAL (hexadecimal). Representacin de nmeros en base
diecisis utilizando los dgitos hexadecimales 0, 1, 2, 3, 4, 5, 6, 7, 8,
9, A, B, C, D, E y F.
INDICADOR DE ACARREO
Un bit en el microprocesador utilizado para almacenar el acarreo resultante de una instruccin en lenguaje mquina.
151
www.FreeLibros.me
INDICADOR DE CERO
Un bit del microprocesador utilizado para almacenar el resultado cero/no cero de una instruccin en
lenguaje mquina.
INDICADOR DE ERROR DE DESBORDAMIENTO
Bit en el microprocesador utilizado para almacenar una condicin de
error de desbordamiento producido en las operaciones en lenguaje
mquina.
INDICADOR DE SIGNO
Bit en el microprocesador que
se usa para almacenar el signo del resultado de una operacin en lenguaje mquina.
INVERSION DE SIGNO. Vase NEGACION.
ITERACION (iteration). Una pasada a travs de un conjunto dado de
instrucciones.
LENGUAJE ENSAMBLADOR
lunguuge). Lenguaje simblico
de ordenadores que se traduce por medio de un programa ensamblador al lenguaje mquina (cdigos numricos que son equivalentes a las
instrucciones del microprocesador).
LENGUAJE MAQUINA (muchine lunguuge). Conjunto ordenado de cdigos numricos compuesto por instrucciones del microporcesador.
Estos valores son producidos por un programa ensamblador desde el
cdigo de lenguaje ensamblador.
MAGNITUD Y SIGNO (sign magnitude). Forma no estndar de representar nmeros positivos y negativos en microordenadores.
MANTISA (muntissu). Porcin fraccionaria de un nmero en punto flotante.
MEMORIA TEMPORAL
Porcin de memoria destinada a almacenar caracteres (u otros datos) cuando son ledos, o utilizada para
almacenar caracteres (u otros datos) para salida.
MEMORIA TEMPORAL DE IMPRESION
Lugar de la
memoria dedicado a almacenar las lneas de caracteres que se van a
imprimir.
MINUENDO
Nmero al que se le resta el sustraendo. En
5-3, 5 es el minuendo.
MULTIPLICACION DE OCHO POR OCHO (eight-by-eight
Multiplicacin de ocho bits por ocho bits para generar un resultado de
diecisis bits.
MULTIPLICACION POR DIECISEIS Y SUMA
Conversin de hexadecimal a decimal multiplicando cada dgito hexadecimal
por 16 y sumando el siguiente dgito hasta llegar al ltimo dgito (el de
ms a la derecha).
152
www.FreeLibros.me
www.FreeLibros.me
www.FreeLibros.me
156
www.FreeLibros.me
alfabtico
www.FreeLibros.me
158
www.FreeLibros.me
Negacin, 153.
Nibble, 18.
Normalizacin, 127, 153.
Normalizar, 123.
Notacin cientfica, 121, 153.
Notacin cientfica en punto flotante, 123.
Notacin en complemento a dos,
37-40.
Notacin en punto flotante, 122.
Notacin posicional, 26, 153.
Nmero binario, 16.
Nmeros binarios, 7, 14, 20, 25,
41, 57, 97.
Nmeros binarios sin signo, 37.
Nmeros con signo, 37, 41, 49, 67,
153.
Nmeros decimales, 8, 14, 26, 41.
Nmeros en punto flotante, 121,
153.
Nmeros en punto flotante de doble precisin, 129.
Nmeros escalados, 153.
Nmeros hexadecimales, 8, 21, 35.
Nmeros mixtos, 100-101, 153.
Nmeros negativos, 38-39.
Nmeros
8, 21, 35.
RAM, 17-18.
Rango de nmeros, 131.
Redondeo, 154.
Registro de los multiplicandos, 74,
154.
Registro de producto parcial, 7475, 154.
Registros, 17, 50-51, 65-66, 74, 83,
92, 154.
Representacin
38.
Residuos, 155.
Resta sucesiva, 8 1.
www.FreeLibros.me
ROM, 17-18.
Rotaciones, 65-66.
Rutinas, 73, 101.
160
www.FreeLibros.me
www.FreeLibros.me