matematicas para programadores_william barden
Post on 12-Oct-2015
69 Views
Preview:
TRANSCRIPT
-
5/29/2018 Matematicas Para Programadores_William Barden
1/144
-
5/29/2018 Matematicas Para Programadores_William Barden
2/144
Matemticas paraprogramadoresSistemas de numeraciny aritmtica binaria
William Barden, Jr.
ANAYA MULTIMEPIA
-
5/29/2018 Matematicas Para Programadores_William Barden
3/144
INFORMATICA PERSONAL-PROFESIONAL
Ttulo de la obra original:MICROCOMPUTER MATH
Traduccin: Fernando GarcaDiseo de coleccin: Antonio LaxDiseo de cubierta: Narcs Fernndez
Reservados todos los derechos. Ni latotalidad ni parte de este libro puedereproduwse o transmitirse por ningn
procedimiento electrnico o mecnico,incluyendo fotocopia, grabacin magn-tica o cualquier almacenamiento de in-formacin y sistema de recuperacin, sinpermiso escr ito de Ediciones AnayaMultimedia, S. A.
Copyright 0 1982 by Howard W. Sams & Co., Inc.Indianapolis, IN 46268
0 EDICIONES ANAYA MULTIMEDIA, S. A., 1986Villafranca, 22.28028 MadridDepsito legal: M. 2579-1986ISBN: 84-7614-070-3Printed in SpainImprime: Anzos, S. A. Fuenlabrada (Madrid)
-
5/29/2018 Matematicas Para Programadores_William Barden
4/144
-
5/29/2018 Matematicas Para Programadores_William Barden
5/144
.
6.
7.
8.
9.
10 .
Multiplicacin y divisin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zelda aprende cmo desplazar por s misma. Algoritmos de multiplica-cin. Algoritmos de divisin. Ejercicios.
Mltiple precisin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
iTienen algo que ver las series de Fibonacci con la televisin? Suma yresta empleando mltiple precisin. Multiplicacin en mltiple preci-
sin. Ejercicios.Fracciones y factores de escala . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Big Ed pesa los nmeros. Fracciones en sistema binario. Operando confracciones en sistema binario. Ejercicios.
Transformaciones ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Big Ed y el inventor. Cdigos ASCII. Paso de ASCII a enteros bina-rios. Paso de ASCII a fracciones binarias. Paso de enteros binarios aASCII. Paso de fracciones binarias a ASCII. Ejercicios.
Nmeros en punto flotante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . y tres mil platos combinados para la nave nodriza... Notacin cient-fica en punto flotante. Uso de potencias de dos en lugar de potenciasde diez. Nmeros en punto flotante de doble precisin. Clculos en losque se emplean nmeros binarios en punto flotante. Ejercicios.
Apndices :A ) Respuestas a los ejercicios .......................................B) Conversiones binario, octal decimal y hexadecimal ..............C) Tabla de conversin de nmeros en onpl m ntoa dos.........
Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ndice alfabtico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
-
5/29/2018 Matematicas Para Programadores_William Barden
6/144
Introduccin
No pasa mucho tiempo, despus de adquirir un microordenador, sin queel usuario tropiece fatalmente con referencias tales como nmeros bina-rios, valor hexadecimal, efectuar la operacin lgica Y con dos n-meros para obtener el resultado o desplazar el resultado multiplicandopor dos. Algunas veces, estas referencias suponen que el lector conoce elsistema binario y la forma de operar con l; otras, uno tiene la impresinde que el escritor del manual de referencia realmente tampoco sabe demasia-do sobre las operaciones a realizar.
El objetivo de M at emt i cas para programadores es poner fin a algunos de losmisterios que rodean las operaciones matemticas especiales que se empleanen BASIC y en lenguaje ensamblador. Tales operaciones, como sistemabinario, octal o hexadecimal, operaciones complemento a dos, suma y restade nmeros binarios, indicadores en microordenadores, operaciones lgicas
y desplazamientos, algoritmos de multiplicacin y divisin, operaciones enmltiple precisin, fracciones, factores de escala y operaciones en puntoflotante, se explican detalladamente a lo largo del libro, junto con ejemplosprcticos y ejercicios de autoevaluacin.
Si uno puede sumar, restar, multiplicar y dividir con nmeros decimales,entonces podr ejecutar las mismas operaciones en binario o en cualquierotra base numrica, tal como la hexadecimal. Este libro le ensear cmo.
7
-
5/29/2018 Matematicas Para Programadores_William Barden
7/144
.Tambin ser un excelente compaero en cualquier curso de lengu
ensamblador o BASIC Avanzado.M at emt i cas para programador es consta de diez captulos. La mayora
ellos se basan en el material contenido en los que le preceden. Cada captfinaliza con ejercicios de autoevaluacin. Es provechoso realizar los ejcicios porque ayudan a fijar la materia en su mente, pero no nos enfa
remos con usted si utiliza el libro slo como referencia.Leyendo, se observarn algunas palabras en cursiva. La mayora de e
son trminos informticos que se definen en el glosario. Utilizndotambin los nefitos pueden entender y sacar provecho de este libro.
El libro est estructurado como sigue:El captulo 1 trata el sistema binario desde la base e incluye las c
versiones entre nmeros binarios y decimales, mientras el captulo 2 dcribe los nmeros octales y hexadecimales, y las transformaciones entre e
bases y los nmeros decimales. Los nmeros hexadecimales se utilizanBASIC y en lenguaje ensamblador.
Los nmeros con signo y en complemento a dos se incluyen en el ptulo 3. Los complementos a dos es una notacin usada en nmenegativos.
El captulo 4 trata de los acarreos, errores de desbordamiento e incadores. Estos trminos se usan principalmente en lenguaje mquinen programas en lenguaje ensamblador, pero pueden ser tambin imptantes en programas especiales de BASIC.
Las operaciones lgicas, como las Y" (AND), (OR) y NO" (NOT)BASIC, se describen en el captulo 5 junto con los tipos de despla
mientos posibles en lenguaje mquina. Despus, el captulo 6 habla de algoritmos de multiplicacin y divisin, incluyendo operaciones con y signo.
El captulo 7 describe operaciones en mltiple precisin. Esta pueutilizarse en BASIC y en lenguaje ensamblador para implementar la pcisin ilimitada con cualquier nmero de dgitos.
El captulo 8 incluye fracciones binarias y factores de escala. Esta mteria es necesaria para entender el formato interno de los nmeros en punflotante en BASIC.
Seguidamente, los cdigos y las conversiones ASCII, en cuanto se
fieren a cantidades numricas, se describen en el captulo 9.Finalmente, el captulo 10 proporciona una explicacin de la repres
tacin de los nmeros en punto flotante en la forma en que stos se utilien muchos intrpretes en el BASIC de Microsoft.
Despus, en la ltima seccin del libro, el apndice A contiene las rpuestas a las cuestiones de autoevaluacin; el apndice B contiene ulista de nmeros binarios, octales, decimales y hexadecimales del 0 al 10
8
-
5/29/2018 Matematicas Para Programadores_William Barden
8/144
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 otrostextos; a continuacin, se incluye un glosario de trminos.
WILLIAM BARDEN, JR.
9
-
5/29/2018 Matematicas Para Programadores_William Barden
9/144
El sistemabinario: donde
empieza todoEn el sistema binario, todos los nmeros se representan por una con-
dicin encendido/apagado. Veamos un ejemplo rpido de binario en trminos fcilmente comprensibles.
Big Ed aprende binario
Big Ed Hackenbyte es propietario de Big Eds, un restaurante quesirve comidas rpidas y cenas lentas en el rea cercana a San Jos (California). En esta zona, conocida como Valle del Silicio, hay docenas decompaas que fabrican microprocesadores.
Ed tiene ocho personas a su servicio: Zelda, Olive, Trudy, ThelmaFern, Fran, Selma y Sidney. Debido a la despersonalizacin existente
tiene asignados nmeros para la nmina. Los nmeros asignados son:
Nmero Nmero
Zelda. . . . . . 0 Fern. 4Olive 1 Fran. 5Trudy 2 Selma. 6Thelma 3 Sidney. 7
l l
-
5/29/2018 Matematicas Para Programadores_William Barden
10/144
12
Cuando Big Ed rellen por primera vez el panel de llamadas, tena ocluces, una para cada persona del servicio, como puede verse en la figura 1Un da, sin embargo, Bob Borrow, ingeniero de diseo de una compade microprocesadores conocida como Inlog, llam a Ed.
Ed, podras ser mucho ms eficiente con tu panel de llamadas, jsabPuedo mostrarte cmo hemos diseado el tabln con uno de nuest
microprocesadores.
PANEL DE LLAMADAS ACME
7 6 5 4 3 2 1 0
l o o o o o o o
Figura 1.1. Panel de llamadas de Big Ed
Ed, interesado en la nueva tecnologa, sigui su consejo. El nuevo disdel tabln de anuncios se muestra en la figura 1.2. Tiene tres luces, ctroladas desde la cocina. Cuando se llama a alguien del servicio, suena timbre; jcmo es posible llamar a alguna de las ocho personas del servipor medio de combinaciones luminosas de las tres luces?
Figura 1.2. Panel de llamadas en binario
iVes, Ed? Este panel es muy eficaz. Emplea cinco luces menos que primer panel. Hay ocho combinaciones diferentes de luces. En realidad llamamos permutaciones, pues hay un orden definido en la disposicin de luces. He preparado una tabla de las permutaciones de las luces y la persodel servicio llamada. Dio a Ed la tabla mostrada en la figura 1.3.
Slo hay ocho permutaciones diferentes de luces, Ed, ni ms ni menEstas luces estn ordenadas en forma binaria. Utilizamos el sistema binaen nuestros ordenadores por dos razones: primero, se ahorra espacio. Red
-
5/29/2018 Matematicas Para Programadores_William Barden
11/144
cimos el nmero de luces de ocho a tres. Segundo, los ordenadores baratoslo ,pueden representar normalmente un estado encendido/apagado, iguaque las luces estn encendidas o apagadas. Hizo una pausa para dar unbocado a su Big Edburger.
0 0 0 Z E L D A 00 0 0 O L I V E 10 0 0 T R U D Y 20 0 0 T H E L M A 30 0 0 F E R N 40 0 0 F R A N 5 0 0 SE LMA 60 0 0 S I D N E Y 7
Figura 1.3. Cdigo para el panel
Dar estos cdigos a mis ayudantes para que los memoricen, dijo E
Cada persona del servicio slo tiene que memorizar su cdigo, ETe dar la clave, de forma que puedas descifrar qu persona del servicio ellamada, sin necesidad de la tabla.iVes? Cada luz representa una potencia de dos. La luz de la derechrepresenta dos elevado a cero. La siguiente, dos elevado a uno, y la de ma la izquierda es dos elevado a dos. En realidad es muy parecido al sistemdecimal, donde cada dgito representa una potencia de diez. Garabateun ejemplo en el mantel, como muestra la figura 1.4.
5x100= 57X10 = 7 03x10* =3003 7 50 1
-1 x = 1x 2 = 01x2 = 45
Figura 1.4. Comparacin de los sistemas binario y decimal
De la misma forma que podemos emplear las potencias de diez parnmeros altos, podemos utilizar tantas potencias de dos como queramosPodramos usar treinta y dos luces, si quisiramos. Entonces, para pasar la
1
-
5/29/2018 Matematicas Para Programadores_William Barden
12/144
tres luces en binario a su equivalente en decimal, habra que sumar la potencia de dos correspondiente a cada luz encendida. Garabate otra figuen el mantel (Fig. 1.5).
Dgito 22, con un peso de 4
Dgito 2, con un peso de 2I l Dgito 2O con un peso de 1
1 0 -0 x 2O =0x1=01 x 2 =1x2=21 x 22 =1x4=4
6
NUMERODECIMAL
EQUIVALENTE
Figura 1.5. Paso de binario a decimal
Bueno, parece bastante sencillo, admiti Ed. De derecha a izquierda
las luces representan 1, 2 y 4. Si tuviramos ms camareros y camareras, laluces representaran 1, 2, 4, 8, 16, 32, 64, 128... Su voz dej de orse, al nser capaz de decir la siguiente potencia de dos.
Exacto, Ed. Frecuentemente, tenemos el equivalente a ocho o diecisluces en nuestros microprocesadores. No usamos luces, por supuesto; utilzamos semiconductores que estn apagados o encendidos. Dibuj otrfigura en el mantel, que por aquel entonces estaba lleno de diagramas (Fig. 1.6).
Llamamos bit a cada una de las ocho o diecisis posiciones. Bit una contraccin de dgito binario. Despus de todo, eso es de lo que hemo
estado hablando; los dgitos binarios forman nmeros binarios, igual que lodgitos decimales forman nmeros decimales. Tu panel representa un nmero de tres bits.
En 8 bits podemos representar cualquier nmero entre 0 y 1 + 2 ++ 4 + 8 + 16 + 32 + 64 + 128. Sumando todos ellos, se obtiene 255, el mayor nmero que puede ser contenido en 8 bits.
iQu ocurre con los 16 bits?, pregunt Ed.14
-
5/29/2018 Matematicas Para Programadores_William Barden
13/144
5 3 R c2 6 5 2 ;a ;1 ;1 0 0 0 0 0 0 0 0
POSICIONES DE 8 BITS
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0POSICIONES DE 16 BITS
Figura 1.6. Representacin de 8 y 16 bits
Te lo puedes imaginar, dijo Bob. Tengo que volver al trabajo dedisear microprocesadores.
Ed confeccion una lista con todas las potencias de dos hasta quinceEntonces, las sum todas hasta llegar al resultado que muestra la figura 1.7un total de 65,535 -el mayor nmero que pueden contener 16 bits.
PESOPOSICIONDEL BIT
:48
: 66 4
1 2 8
2 5 6
5 1 21 0 2 42 0 4 8
4 0 9 68 1 9 2
1 6 3 8 4
3 2 7 6 8
01
2
345
78
91 0
l l
1 21 31 4
1 5
6 5 5 3 5
Figura 1.7. Valor mximo de 16 bits
1
-
5/29/2018 Matematicas Para Programadores_William Barden
14/144
El asunto de los microprocesadores es fcil, dijo Ed con una muecmientras daba a su Big Eds Jumboburger un mordisco de 8 bits.
Ms sobre bits, bytes y binario
La explicacin de Bob Borrow del binario condensa muy bien la reprsentacin binaria de los microordenadores. La unidad bsica es un bit dgito binario. Un bit puede estar encendido o apagado. Porque es mucms fcil escribir 0 1, estos dgitos se usan en lugar de encendido/apagadcuando representamos valores binarios.
Laposicin del bit del nmero binario se refiere a la posicin del dgen el nmero. La posicin del bit en la mayora de los microordenadortiene un nmero asociado, como se muestra en la figura 1.8. Puesto qstas, en realidad, representan una potencia de dos, es conveniente numrarlas de acuerdo con la potencia de dos representada. Elbit de ms aderecha es dos elevado a cero, y la posicin del bit es, por tanto, cerLas posiciones del bit hacia la izquierda se numeran 1 (dos elevado a uno2 (dos elevado a dos), 3, 4, 5, etc.
NUMERO DE LA POSICION DEL BIT- - - A \
7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0
Figura 1.8. Numeracin de las posiciones del bit
En todos los microordenadores actuales, un grupo de ocho bits se denmina un byte. De alguna manera, es obvio el origen de esta palabra si noimaginamos a los primeros ingenieros informticos comiendo en el equivlente de Big Eds
La memoria de un microordenador viene a menudo indicada por nmero de bytes de que consta.
Cada byte corresponde aproximadamente a un carcter, como veremen captulos posteriores. Las operaciones de entrada y salida de la memria se hacen generalmente de un byte cada vez.
N. del T.: Se trata de un juego de palabras entre bite (morder), byte y bit, qadems de dgito binario, en ingls significa mordisco.
N. del T Contina con el mismo juego de palabras relativo a byte.
16
-
5/29/2018 Matematicas Para Programadores_William Barden
15/144
Los registros en el interior de un microprocesador tienen tambin la extensin de uno o dos bytes. Estos, en realidad, no son ms que posicionede memoria de acceso rpido que se utilizan para almacenamiento temporaen el microprocesador. Normalmente hay diez bytes de registros en lomicroprocesadores y hasta 65,535 bytes en la memoria de un microor-denador, como ilustran las figuras 1.9 y 1.10.
iB
;E
LF A B C
D E
H
L I X
IYP C
IR
POSICION 01
REGISTROS
I 1
i
c ------- -l
6 5 , 5 3 46 5 , 5 3 5e
EN CPU
I MEMORIA
ROM Y RAMUN BYTEFigura 1.9. Registros y memoria del Z-8017
-
5/29/2018 Matematicas Para Programadores_William Barden
16/144
REGISTROS
F]U _5 - - - -
DP
CC
POSICION 01
MEMORIA
6 5 , 5 3 46 5 , 5 3 5UN BYTE
EN CPU
ROM Y RAM
Figura 1.10. Registros y memoria del 6809E
iHay otras agrupaciones por encima o por debajo de los bytes? Anos microordenadores hablan de palabras, que pueden ser dos o ms bypero, generalmente, byte es el trmino ms utilizado para nombrar un grde bits. Algunas veces, las agrupaciones de cuatro bits se denominan nibb(los primeros ingenieros informticos deban estar obsesionados concomida).
El BASIC, generalmente, opera con ocho o diecisis bits de datos avez -uno o dos bytes-. Un byte se utiliza para las instrucciones PEo POKE del BASIC, que permiten al usuario leer o escribir datos en
posicin de memoria. Esto es til cuando se usan para cambiar algunoslos parmetros del sistema que, de otra manera, seran inaccesibles de
el BASIC.Se utilizan dos bytes para representar variables enteras. En este tipo
formato, una variable del BASIC puede contener valores desde -32,hasta +32,767. Este nmero se almacena como un valor entero con sigcomo veremos en el captulo 3.
3N. del T.: Nibble, en ingls, significa tambin bocadito.
18
-
5/29/2018 Matematicas Para Programadores_William Barden
17/144
Si est interesado en el lengua_je ensamblador de su microordenadortendr que operar con bytes para realizar operaciones aritmticas, comosuma y resta, y de uno a cuatro bytes para representar el lenguaje mquinacorrespondiente a la instruccin del microprocesador.
Ya que nos referiremos continuamente a valores de uno y dos bytesvamos a investigar sobre ellos ms a fondo.
Paso de binario a decimal
Big Ed encontr los valores mximos que podan ser almacenados en unoo dos bytes, sumando todas las potencias de dos. Eran 255 para un byte y65,535 para dos bytes. Cualquier nmero entre ellos puede ser representadoempleando los bits apropiados.
Supongamos que tenemos el valor binario de 16 bits 0000101001011101.
Para encontrar el nmero decimal de este valor binario, podramos utilizael mtodo de Big Ed de sumar las potencias de dos. Esto se ha hecho en lafigura 1.11, donde obtenemos como resultado 2653. iHay alguna formams sencilla de pasar de binario a decimal? S, hay varias.
5 4 3 2 29 28 27 26 5 4 23 2 2
0 0 0 0 1 0 1 0 0 1 0 1 1 1 0 1
ll X2O = 11x 2' = 4
l x23 = 8x24 = 16X26= 6 4x2s = 5121 x 2" = 2048
2653
Figura 1.11. Paso de binario a decimal
El primer procedimiento consiste en usar una tabla de valores. Hemos
incluido una tabla de este tipo en el apndice C, que muestra la relacinentre los sistemas binario, octal, decimal y hexadecimal para valores hasta1023. Como para mostrar valores hasta 65,535 con 16 bits se necesita bas-tante espacio, tiene que existir un procedimiento ms adecuado.
Un mtodo que funciona sorprendentemente bien es el llamado doblary sumar. Despus de un poco de prctica, resulta muy fcil pasar unos diezbits de binario a decimal. En el siguiente captulo se muestra un mtodo que
19
-
5/29/2018 Matematicas Para Programadores_William Barden
18/144
sirve para diecisis o ms bits. Doblar y sumar es un procedimiento estrimente mecnico, que automatiza el proceso de conversin. Es ms difdescribirlo que hacerlo. Para utilizarlo, haga lo siguiente:
1. Tome el primer 1 (ms a la izquierda) del nmero binario.2. Multiplique el 1 por dos y sume el siguiente bit de la derecha, sea 0 3. Multiplique el resultado por dos y sume este resultado al siguiente 4. Repita este proceso hasta que el ltimo dgito haya sido sumado al to
El resultado es el nmero decimal equivalente al nmero binario.
Este procedimiento se muestra en la figura 1.12 para la cantidad 26utilizada en el ejemplo anterior. Despus de haber estado operando cnmeros binarios durante algn tiempo, es probable que reconozca 1como el decimal 15 y 111 ll como 31. Puede emplear tambin pequetrucos, como darse cuenta que 11110 es uno menos que 31; o que 101
l x 2 = 29x = 4
7 x 2 = 10+ o10x2=20~~ 20
2 0 x 2 = 40+1=X =
+o8 2 X 2 = 1 6 4+1
165165 X 2 = 3 3 0
? ?- X 2 = 6 6 2+16 6 3
6 6 3 X 2 = 1 3 2 6
X 2 = 2 6 5 2+1
2 6 5 3
0 0 0 0 1 0 1 0 0 1 0 1 1 1 0 1
Figura 1.12. Paso de binario a decimal empleando el mtodo doblar y sumar
2 0
-
5/29/2018 Matematicas Para Programadores_William Barden
19/144
es tambin 1010 = 10 (en decimal) multiplicado por cuatro para obtener unvalor de 40. Por el momento, sin embargo, haga unos pocos ejemplos paraacostumbrarse al procedimiento; con el tiempo lo har automticamentey probablemente no vale la pena malgastar el tiempo en convertirse enexperto en el sistema binario.
Paso de decimal a binario
iCmose hace a la inversa? Es un proceso diferente. Supongamos quetenemos que pasar el nmero decimal 250 a binario. Analizaremos variosmtodos.
El primer mtodo es el de inspeccin de potencias de dos. Podradenominarse tambin resta sucesiva de potencias de dos, pero tal vez a BigEd no le gustara el nombre. En este mtodo, todo lo que hacemos es tratarde restar una potencia de dos y poner un 1 en la posicin del bit correcta,si se puede (vase Fig. 1.13). Algunas potencias de dos son :256, 128, 64,32, 16, 8, 4, 2, 1, comenzando por las mayores. Es obvio que 256 no se
podr restar, luego pondremos un 0 en esa posicin. La potencia 128 vale,quedando 122. Ponemos un 1 en la posicin 7. La potencia 64 se resta a122, quedando 58; luego ponemos un 1 en la posicin 6. Este proceso serepite hasta calcular la ltima posicin, como muestra la figura 1.13.
El mtodo anterior es muy aburrido. Hayuno mejor? Uno ms eficazes el llamado dividir por dos y guardar los restos. En este mtodo sehace lo que indica el nombre; esto se explica en la figura 1.14. La primera
divisin es 250 entre dos, resultando 125. Resto 0. La siguiente divisin es125 entre dos, dando 62 y quedando 1. El proceso se repite hasta que elresiduo es 0. Ahora, los restos se colocan en orden inverso. El resultado esel nmero binario equivalente al decimal.
Rellenar a ceros hasta ocho o diecisis bits
Este es un punto no carente de importancia. Las posiciones de la izquier-da se rellenan con ceros. Esto es una refinada sutileza que se emplea para
completar con ceros el nmero binario hasta ocho o diecisis bits, segnel tamao con el que se est operando. Tiene, sin embargo, implicacinen los nmeros con signo, luego es mejor empezar a manejarlos en la prc-tica cuanto antes.
En el captulo siguiente trataremos la notacin de los nmeros octalesy hexadecimales. Mientras tanto, intente hacer algunos ejercicios de autoeva-luacin para practicar el paso entre nmeros decimales y binarios.
21
-
5/29/2018 Matematicas Para Programadores_William Barden
20/144
250 2 5 60
250 1 2 8122 1
122
58
58
26
26
10
10
2
2
2
0
0
0
, : 2
1
1
81
40
21
I I0
b 011111010
Figura 1.13. Paso de decimal a binario por inspeccin
22
-
5/29/2018 Matematicas Para Programadores_William Barden
21/144
Figura 1.14. Paso de decimal a binario por el mtodo dividir y guardar los restos
Ejercicios
25 2
7
0 Yi--@ 151 2
1 1121 0 --RESIDUO FINAL
1. Hacer una lista de los equivalentes binarios de los nmeros decimales 20 a 32.2. Pasar los siguientes nmeros binari.os 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. iCul es el mayor nmero decimal que puede ser almacenado en cuatro bits?iY en seis bits? iY en ocho? iY en diecisis? Si n es el nmero de bits,iqu regla general se puede establecer sobre el mayor nmero que se puedealmacenar en n bits? (La respuesta Unos nmeros enormes, no se consideraaceptable.)
23
-
5/29/2018 Matematicas Para Programadores_William Barden
22/144
2Octal,
hexadecimal
y otras basesnumricasLos sistemas hexadecimal y octalson variantes de los nmeros binarios.
Se utilizan normalmente en sistemas de microordenadores, especialmente elhexadecimal. Los datos pueden especificarse en notacin hexadecimal, tanto
en BASIC como en lenguaje ensamblador, en muchos microordenadores.Trataremos los sistemas octal y hexadecimal en este captulo junto a otrossistemas numricos interesantes. Hagamos otra visita a Big Ed.
El chile est bien en Casiopea ,
No se ve mucha gente como t por aqu, dijo Big Ed, mientras ponaun cuenco del Chile Sorpresa de Big Ed frente a un cliente de piel verde conescamas.
S que debera decir algo como S, y con estos precios usted ver muchosmenos, pero le dir la verdad. Acabo de llegar de las Naciones Unidas paraechar un vistazo a su industria de semiconductores, dijo el visitante. Esimpresionante.
Yo mismo he trabajado en ella, dijo Big Ed, mirando a su panel dellamadas. iDe dnde eres, Buddy? No he podido evitar lijarme en tus manosde ocho dedos.
25
-
5/29/2018 Matematicas Para Programadores_William Barden
23/144
Probablemente nunca has odo hablar de ello; es una estrella pequa... ehm... un lugar. Estas manos, por cierto, son las que me trajeron Valle del Silicio. Vuestros ltimos microprocesadores son para mi genalgo natural. LTe gustara or algo sobre ello?
Ed asinti.Vers, nosotros somos los Hackers i, y basamos todo en las potenc
de diecisis. Mir a Big Ed para ver si haba cogido la idea. Cuandnuestra civilizacin se desarrollaba al principio, contbamos con nuestrmanos. Encontrbamos muy fcil contar vuestro valor diecisis utilizansimplemente nuestros dedos. Posteriormente, necesitamos expresar nmermayores. Hace muchos eones, uno de nosotros descubri la notacin posicim Como tenemos diecisis dedos, nuestros numeros utilizan una base diecisis, del mismo modo que los vuestros emplean una de diez. Cadgito representa una potencia de diecisis: 1, 16, 256, 4096, etc.
iCmo funciona exactamente ?, dijo Big Ed, mirando ansiosamente mantel limpio que haba puesto haca algunos das.He aqu un nmero tpico, dijo el visitante, garabateando repentinmente en el mantel. Nuestro nmero A5Bl representa:
A x 163 + 5 x 16 + B x 16l + 1 x 16Pero, iqu son las Aes y las Bes?, pregunt Big Ed.Ah, me olvidaba. Cuando contamos con nuestros dedos decimos 1,
3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F. De hecho, stos son slo quindedos; nuestro ltimo dedo representa el nmero despus de F, nuest
10, que es vuestro diecisis.iAj Luego A representa nuestro 10, B nuestro ll, etc., dijo Edibujando una tabla como muestra la figura 2.1.
IExactamente , dijo el visitante. Ahora puedes ver que el nmeA5B1, en nuestra base 16, es igual a vuestro nmero 42,417.A x 163 + 5 x 162 + B x 16i + 1 x 16 =10 x 4096 + 5 x 256 + l l x 16 + 1 x 1 = 42,417
Bueno, resumiendo, vuestro sistema numrico decimal es realmente e
pantoso. Estuvimos a punto de no comerciar con vosotros despus de decubrir que utilizabais nmeros decimales. Afortunadamente, sin embargdescubrimos que la base numrica que utilizis con mayor frecuencia vuestros ordenadores era la hexadecimal, que en nuestra base diecisis
N. del 72 Un hacker en Estados Unidos es un manaco de los ordenadores. Rcurdese que Big Ed se apellida Hackenbyte.
26
-
5/29/2018 Matematicas Para Programadores_William Barden
24/144
Espera un segundo, exclam Big Ed, utilizamos binarios en nuestrosordenadores.
Bueno, s, por supuesto, a nivel de hardware, pero utilizis el hexadeci-mal como una especie de abreviatura para representar valores de datos einstrucciones de memoria. Despus de todo, el binario y el hexadecimalson casi idnticos. Continu despus de observar la perplejidad de Big Ed.
DECIMAL BASE 16
0 0
: :3 3
4 45 56 6
7 78 89 9
1 0 A1 1 B
1 2 C
1 3 D1 4 E
1 5 F
Figura 2.1. Representacin de la base 16
Mira, supn que tengo el nmero AlF5. Lo representar alzando mismanos (Fig. 2.2). Los ocho dedos de la mano a tu derecha representan losdos dgitos hexadecimales de F5. Los ocho dedos a tu izquierda representanlos dos dgitos hexadecimales de Al. Cada dgito hexadecimal se representacon cuatro dedos, que contienen cuatro bits o el dgito en binario. LEn-tendido ?
Big Ed se rasc la cabeza. Veamos, 5 en binario es 0101, y se repre-senta por esos cuatro nmeros. El grupo siguiente de cuatro representa laF, que es en realidad 15, o binario 1111. El grupo siguiente... iOh, claro!En lugar de escribir 1010000111110101, slo escribs la notacin abre-viada AlF5.iBig Ed, no slo sirves el mejor chile de este lado de Altair; eres unmatemtico de los pies a la cabeza!, exclam el visitante al tiempo quegesticulaba con su verde y escamosa mano de ocho dedos.
Big Ed mir la moneda de cobre de diecisis lados dejada como propinay empez a imaginar sobre el mantel...
27
-
5/29/2018 Matematicas Para Programadores_William Barden
25/144
Figura 2.2. Abreviatura hexadecimal
Hexadecimal
El visitante de Ed tena razn. El sistema hexadecimal se usa en micdenadores porque es un mtodo adecuado para acortar largas series de y ceros binarios. Cada grupo de cuatro bits se puede convertir envalor hexadecimal de 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E o F, comuestra la tabla 2.1.
Pasar de binario a hexadecimal es algo muy simple. Empezandoel bit de la derecha (bit 0), divida el nmero binario en grupos de cuaSi no tiene un m tiplo entero de cuatro (4, 8, 12, etc.), quedan alg
bits vacos a la izquierda; en este caso, rellene a ceros sin ms. Desconvierta cada grupo de cuatro bits en un dgito hexadecimal. El resules la representacin hexadecimal del valor binario, que es la cuarta partlargo en caracteres. La figura 2.3 muestra un ejemplo. Para pasar de h
28
-
5/29/2018 Matematicas Para Programadores_William Barden
26/144
Tabla 2.1. Representacin binaria, decimal y hexadecimal
Binaria Decimal Hex.
0000 0 0
0001 1 1
0010 2 20011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
1000 8 8
1001 9 9
1010 10 A
1011 l l B
1100 12 C
1101 1 3 D1110 14 E
1111 15 F
(NUMERO1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 1 BINARIO DE 16 BITS)
uDIVIDIR
EN GRUPOSDE CUATRO
PASA CADA GRUPOA UN DIGITOHEXADECIMAL
D 6 3 1 (HEXADECIMALEQUIVALENTE)
Figura 2.3. Paso de binario a hexadecimal
decimal a binario, haga a la inversa. Tome cada dgito hexadecimal y con-virtalo 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
-
5/29/2018 Matematicas Para Programadores_William Barden
27/144
(NUMEROA 7 B 2 HEXADECIMAL)
uCONVERTIRLO ENGRUPOS DE CUATRODIGITOS BINARIOS
UNIR GRUPOS
1 0 1 0 0 1 1 1 1 0 1 1 0 0 1 0 (BINARIOEQUIVALENTE)
Figura 2.4. Paso de hexadecimal a binario
Paso de hexadecimal a decimal
Convertir binario en hexadecimal es fcil. Lo es tambin entre decimy hexadecimal? Se pueden aplicar muchos de los principios y tcnicas ttados en el primer captulo.
Para pasar de hexadecimal a decimal por el mtodo de las potencde diecisis, tome cada dgito hexadecimal y multiplquelo por la potenadecuada de diecisis, como hizo Big Ed. Para pasar lFlE, por ejempharamos:
1 x 4096 + 15 x 256 + 1 x 16 + 14 x 1 = 7966El mtodo doblar y sumar puede tambin adaptarse a multiplicar
diecisis y sumar (de hecho, este esquema sirve para cualquier base numrica). Tome el dgito hexadecimal de la izquierda y multiplique por Smelo al siguiente. Multiplique el resultado por 16. Sume el siguiedgito. Repita el proceso de multiplicacin y sume hasta que el ltimo dgde la derecha sea operado. La figura 2.5 muestra este procedimiento.
Debera probar este procedimiento y comparar los resultados con de doblar y sumar del sistema binario (no hace falta decirlo: ms v
que el resultado sea el mismo).
Paso de decimal a hexadecimal
El mtodo de la resta sucesiva de potencias de diecisis no es mprctico esta vez, ya que tendra que hacer 15 restas para obtener un gito hexadecimal. El mtodo anlogo dividir por diecisis y guardar
30
-
5/29/2018 Matematicas Para Programadores_William Barden
28/144
X 16 = 496
1 F 1 E
Figura 2.5. Paso de hexadecimal a decimal por el mtodo multiplicar por diecisis y sumar
restos, sin embargo, es muy prctico, como muestra la figura 2.6. Tome-mos, como ejemplo, el valor decimal 48,555. Dividiendo por diecisis seobtiene un valor de 3034, con un resto de ll (B en hexadecimal). En-tonces, dividiendo 3034 entre 16 da 189, con un resto de 10 (A en hexa-decimal). Dividiendo 189 por 16, resulta ll, con un resto de 13 (D hexade-cimal). Finalmente, dividiendo ll por 16 da 0, con un resto de ll. Los restos,en orden inverso, son el equivalente en hexadecimal BDAB.
4 8 5 5 5 1 655- - 3034
(NUMERO HEXADECIMAL
16 EQUIVALENTE)
1189 16 B
02B 11D A
Figura 2.6. Paso de decimal a hexadecimal
31
-
5/29/2018 Matematicas Para Programadores_William Barden
29/144
OctalEl sistema hexadecimal es la base ms usada en microordenad
Sin embargo, el octal o base 8 se emplea tambin. Este ltimo se upreferentemente en los microprocesadores 8080. Como el Z-80 que muchos microordenadores, es una mejora del 8080; muchas instruccide ste sirven para el Z-80. Algunas de estas instrucciones utilizan camde tres bits y su posicin es tal que la representacin octal es adecuad
Los valores octales emplean potencias de 8, es decir, la posicin para la potencia de cero (8),la posicin 2 es para la primera potenciala posicin 3 es para la segunda potencia (S2), etc. Aqu no se plantproblema de asignar nombres a los nuevos dgitos, como suceda ehexadecimales A a F. Los dgitos octales so.n 0, 1, 2, 3, 4, 5, 6, 7. dgito se puede representar por tres bits.
Paso entre binario yoctalEl paso de binario a octal es similar a la conversin a hexadeci
Para pasar de binario a octal, agrupe los bits en grupos de tres, empezpor la derecha. Si opera con nmeros de 8 16 bits, sobrarn alguRellene a ceros. Despus, cambie cada grupo de tres bits por un doctal. Un ejemplo se da en la figura 2.7. Para pasar de octal a binefecte el proceso inverso.
01010110
RELLENADO A u0 0 1 0 1 0 1 1 0
1
(NUMERO BINARIODE 8 BITS)
DIVIDIR ENGRUPOS DE TRES
u CONVERTIR CADAGRUPO EN UNDIGITO OCTAL2 6 OCTALEQUIVALENTE)
Figura 2.7. Paso de binario a octal
32
-
5/29/2018 Matematicas Para Programadores_William Barden
30/144
Paso entre octal y decimalEl paso de octal a decimal puede llevarse a cabo por el mtodo de
las potencias de ocho o por el de multiplicar por ocho y sumar. En elprimer mtodo, multiplique el dgito octal por la potencia de ocho. Parapasar el octal 360, por ejemplo, haramos:
3~8~+6x8~+0~8=3x64+6x8 +0x1 =192 +48 +0 =240
Utilizando el mtodo multiplicar por ocho y sumar, tome el dgito octalde la izquierda y multiplquelo por ocho. Sume el resultado al siguientedgito. Multiplique este resultado por ocho y smelo al siguiente. Repita esteproceso hasta que el ltimo dgito de la derecha haya sido sumado. Esteprocedimiento se muestra en la figura 2.8.
(NUMERO DECIMAL
EQUIVALENTE)
(NUMERO
OCTALFigura 2.8. Paso octal a decimal mediante multiplicacin por ocho y suma
Para pasar de decimal a octal se adopta de nuevo la tcnica de dividiry guardar los restos: divida el nmero octal por ocho y guarde el resto.Divida el resultado de nuevo y repita hasta que el resto sea menor que ocho.Los restos, en orden inverso, son el nmero octal equivalente. La figura 2.9muestra un ejemplo.
33
-
5/29/2018 Matematicas Para Programadores_William Barden
31/144
1 6
(NUMERO OCTALl _ EQUIVALENTE)6hl Q 6 4 0 5
Figura 2.9. Paso de decimal a octal por el mtodo dividir y guardar los restos
Trabajando con otras bases numricas
Aunque las bases ms utilizadas en microordenadores son la octalhexadecimal, se puede operar con cualquier base, ya sea base 3, baso base 126. Un popular paquete de programas de Microsoft, muMatpermite utilizar casi cualquier base para un extenso nmero de dgitoprecisin.
Dos ejemplos del uso de cualquier base pueden ser interesantes. vieja tcnica para comprimir tres caracteres en dos bytes emplea la basCada uno de los caracteres alfabticos de la A a la Z, los dgitos 0 al 9 y cuatro caracteres especiales (punto, coma, interrogacin y admirao cualesquiera otros), forman un cdigo que corresponde del 0 al 30 encimal. Como el mayor nmero de tres dgitos en base 40 es 39 x 40+ 39 x 4Or + 39 x 40, 63,999, los tres dgitos en base 40 pueden gdarse perfectamente en diecisis bits (dos bytes). Generalmente, los tresracteres deberan contenerse en tres bytes. El resultado de esta compreconsiste en el ahorro de un 50 por 100 del espacio de la memoria
texto utilizando slo de la A a la Z, del 0 al 9 y cuatro caracteres peciales.Un segundo ejemplo sera el proceso especia1 de tres en raya americ(tic-tactoe). Cada uno de los nueve elementos de un tablero de tres en r
contiene un cuadrado, un crculo o una cruz. Como hay tres cateres, puede utilizarse ventajosamente una representacin en base 3 pacio = 0, crculo = 1, cruz = 2). El mayor nmero en base 3 para este c
34
-
5/29/2018 Matematicas Para Programadores_William Barden
32/144
sera 2 x 38+ 2 x 3+ 2 x 36+ 2 x 35+ 2 x 34 + 2 x 33+ 2 x 32+ 2 x 3i ++ 2 x 3, 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 basey guardar los restos, de manera parecida a los nmeros octalesy hexa-decimales.
Convenios estndar
En el resto de este libro emplearemos ocasionalmente el sufijo Hpara los nmeros hexadecimales. El nmero 1234H, por ejemplo, significar 1234 hexadecimal y no 1234 decimal. (Tambin ser equivalente&H1234 en algunas versiones del BASIC.) Asimismo, expresaremos las po-tencias de la misma forma que lo hace el BASIC. En lugar de exponentesutilizaremos una flecha hacia arriba ( ? para expresar exponenciales (elevaun nmero a una potencia). El nmero 2 se representar 2 t8, lo5 ser10r 5 y 10m7 (0 /ro) ser 10 t -7.
En el siguiente captulo trataremos los nmeros con signo. Mientras tantotrabaje sobre los siguientes ejercicios en hexadecimal, octal y bases especiales
Ejercicios
1.2.3.
4.
5.6.7.
8.9.
10.
iQu representa el nmero hexadecimal 9E2 en potencias de 16?Haga una lista de los equivalentes hexadecimales a los decimales 0 a 20.Pasar los siguientes nmeros binarios a hexadecimal: 0101, 1010, 1010101001001111, 1011011000111010.Pasar los siguientes nmeros hexadecimales a binario: AE3, 999, F232.Pasar los siguientes nmeros hexadecimales a decimales: E3, 52, AAAA.Pasar los siguientes nmeros decimales a hexadecimal: 13, 15, 28, 1000. ~La mxima direccin de memoria en un microordenador de 64K es 64,535.iCuntoes en hexadecimal?Pasar los siguientes nmeros octales a decimales: 111, 333.Pasar los siguientes nmeros decimales a octal :7, 113, 200.Qu puede decir del nmero octal 18? (Limite su respuesta a mil pala-
bras o menos, por favor.)ll. En un sistema numrico en base 7, jcul sera el equivalente decimal a 636?
35
-
5/29/2018 Matematicas Para Programadores_William Barden
33/144
-
5/29/2018 Matematicas Para Programadores_William Barden
34/144
3Nmeros con
signo y notacinen complementoa dos
Hasta ahora hemos hablado de los nmeros binarios sin signo, que slorepresentan valores positivos. En este captulo aprenderemos cmo repre-sentar valores positivos y negativos en microordenadores.
Big Ed y el bnaco
iHola, muchacho! iQu quieres?, pregunt Big Ed a un cliente delgadocon un abrigo muy largo de colores y brocado.
Tomar un chapsuey, dijo el cliente.iQu traes ah?, pregunt Big Ed, cotilleando un artilugio de aspecto
extrao que pareca un baco, con slo unas pocas cuentas. Parece un
baco.iNo,es un bnaco!, dijo el cliente. Iba a ser mi camino hacia la famay la fortuna, pero, iay , el que busca a aquellas dos como compaeras en elcamino de la vida slo encontrar desengaos. Te importara escucharme?
Ed invit con sus manos a que comenzara su historia, sabiendo queno tena eleccin; era una pesada tarde.
Este aparato es como un baco, pero funciona con nmeros binarios.
37
-
5/29/2018 Matematicas Para Programadores_William Barden
35/144
Por eso tiene diecisis columnas de ancho y una sola cuenta por cna (Fig. 3.1). Pas aos desarrollndolo y slo recientemente he intcomercializarlo a travs de alguna firma de microordenadores deiTodas lo rechazaron
Figura 3.1. El bnaco
iPorqu, hombre ?,dijo Ed, sirvindole el chapsuey.Puede representar cualquier nmero de cero a 65,535, y uno sumar o restar fcilmente nmeros binarios con l. Pero no hay mo
representar nmeros negativos.Justo cuando pronunci estas palabras, Bob Borrow, el ingenie
Inlog, entr. No he podido evitar el escuchar tu historia, dijo. Crepuedo ser de alguna ayuda.
Vers, los ingenieros informticos se enfrentaron con tu problemmuchos aos. Muchas veces, basta simplemente con almacenar un nabsoluto. Por ejemplo, la mayora de los microprocesadores pueden cenar 65,536 direcciones separadas, numeradas de 0 a 65,535. No hay
para tener nmeros negativos en este caso. Por otro lado, los microodores son capaces de realizar operaciones aritmticas con datos y debcapaces de almacenar valores negativos y positivos.
Hay diferentes esquemas para representar nmeros negativos, obEd resping cuando Bob se dirigi al mantel.
Podra sencillamente aadir una cuenta ms, la diecisiete, en el exizquierdo del bnaco. Si la cuenta estuviese arriba, el nmero repressera positivo; si la cuenta estuviese abajo, el nmero sera negativoesquema se denomina representacin signo/magnitud. (Vase la figur
Es cierto, dijo el forastero. Desde luego, implicara un nue
seo. Medit, mirando el invento.Espera, todava no he acabado. Tengo un proyecto para que no
que reformar nada. Se llama notacin en complemento a dos, y te pealmacenar nmeros de -32,768 a +32,767 sin ninguna modificaciniOh, seor! Si usted pudiera hacerlo..., dijo el forastero.
En este proyecto, haremos que la cuenta decimosexta del linalposicin quince, represente el bit de signo. Si la cuenta est arriba o 0, el
38
-
5/29/2018 Matematicas Para Programadores_William Barden
36/144
(COLUMNAAADIDA)
BINACO ACME
(NEGATIVO)
0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0, - 1 3 0 8Figura 3.2. Representacin signo/magnitud
ser positivo y las cuentas restantes contendrn el valor del nmero. Desde elmomento en que tenemos slo quince cuentas, el nmero representado serdesde 0 (000 0000 0000 0000) a 32,767 (1 ll ll ll ll ll ll 1 l).Yqu 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 lascuentas que estn arriba o 0 hacia abajo o 1. Mueva todas las cuentas queestn 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.iNo, espere, el sistema funciona , exclam Bob. Mire, permtame mos-trarle. Suponga que tiene la configuracin 0101 1110 1111 0001. La cuentadel signo es un 0, luego el nmero representa 101 1110 1111 0001 (enhexadecimal, 5EFl; oen decimal, 24,305). Ahora, suponga que la confgu-racin es 1001 1010 0001 0101. La cuenta del signo es un 1, luego el nmeroes 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 de-
cimal 26,091; adems, el nmero representado es -26,091. Este esquemaes el mismo que usan los microordenadores. iPodr vender fcilmente suidea del bnaco a un fabricante, si le dice que emplea este sistema de nota-cin en complemento adospara los nmeros negativos!
El forastero pareca dudar. Aver si entiendo esto. Si la cuenta del signoes un uno, iinvierto todas las cuentas y aado uno? Djeme probar unospocos ejemplos. Movi las cuentas del bnaco y calcul sobre el mantel.
39
-
5/29/2018 Matematicas Para Programadores_William Barden
37/144
c:ENTA DEL-SIGNO = 1CAMBIAR DE POSICION TODASLAS CUENTAS SI LA CUENTADEL SIGNO ES UN UNO
SE SUMA UNO AQUI(CUENTA MOVIDA HACIA ABAJO)
0 1 1 0 0 1 0 1 1 1 1 0 1 0 1 1
9 -126091Figura 3.3. Notacin en complemento a dos
Ed comenz a desesperar. La tabla de lo que l obtuvo se muestrla fgura 3.4.
Me parece que los nmeros negativos de 1 a 32,768 podran acenarse por este procedimiento. Pero, iporqu es tan complicado?
Para que resulte ms fcil en hardware, colega, dijo Bob. Este mimplica que todos los nmeros pueden sumarse o restarse sin necesde comprobar primero el signo de cada operando. Basta con seguir sumo restando los nmeros, y el resultado tendr el signo correcto. Supo
que tenemos los dos nmeros 0011 0101 0111 0100 y 1011 1111 0000 0Son + 13,684 y 16,640, respectivamente. Los sumamos de la manerguiente:
0011 0101 0111 0100 + 13,684)1011 1111 0000 0000 ( - 16,640)1111 0100 0111 0100 -2,956)
-
5/29/2018 Matematicas Para Programadores_William Barden
38/144
NUMERO EN COMPLEMENTO REPRESENTACION
A DOS DECIMAL
1 1 1 1 1 1 1 32 767
0 1 0 0 0 0 0 20 640
0000 0000 0000 0 0 1 0 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1111 1111 1111 1111 - 1
1111 1111 1111 1 1 1 01111 1111 1111 1101 1;bl l l l 0 0 0 0 0 0 0 0 0 0 0 0 - 4 , 0 9 6
l
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 3 2 , 7 6 8
Figura 3.4. Funcionamiento en complemento a dos para diecisis bits
El resultado es 1111 0100 0111 0100, 2,956. iComo debera ser!Es increble. Estudiar esto, vender mi bnaco y volver forrado a
casa.iDnde est tu casa?, pregunt Big Ed.En Brooklyn, dijo el forastero. Adis y gracias; algn da podris
decir que conocisteis a MichaelODonahue.
Sumar y restar nmeros binarios
Antes de ver el esquema del bnaco que representa nmeros con signo(que duplica el sistema utilizado en todos los microordenadores actuales),veamos el tema de la suma y resta de nmeros binarios en general.
Sumar nmeros binarios es mucho ms fcil que sumar nmeros deci-males. iRecuerda cuando tena que aprender de memoria las tablas de sumar?Cuatro y cinco, nueve; cuatro y seis, diez, etc. En el sistema binario tam-
bin hay tablas de sumar, pero son mucho ms sencillas: 0 y 0 es 0, 0 y 1es 1, 1 y 0 es 1, y 1 y 1 es 0, y nos llevamos una a la siguiente posicin.Si sta tiene 1 y 1, entonces la tabla tiene una quinta entrada de 1, y 1 y 1da 1, llevndonos 1 a la siguiente posicin. La figura 3.5 resume la tabla.
41
-
5/29/2018 Matematicas Para Programadores_William Barden
39/144
0+o0
0+11
1 ACARREO
1+1
o +11 1 0r-/
ACARREO AIA POSICIONSIGUIENTE
1tiACARREO ALA POSICION
SIGUIENTE
Figura 3.5. Suma de binarios
Probemos esto con dos nmeros sin signo de ocho bits, los nmerosque hemos estado operando en anteriores captulos. Supongamos quemamos 0011 0101 y 0011 0111 (53 y 55, respectivamente).
l l 111 (Acarreos)
0011 0101 (53)0011 0111 (55)0110 1100 (108)
Los unos encima de los operandos representan los acarreos quvamos a la siguiente posicin. El resultado es 0110 1100, 108, comoperbamos.
La resta es igual de fcil. 0 menos 0 es 0, 1 menos 0 es 1, 1 menes 0. Y, el ms complicado, 0 menos 1 es 1, con un acarreo negb o rr ow a la siguiente posicin, de la misma forma que nos llevamosen aritmtica decimal. Esta tabla est resumida en la figura 3.6.
0 1 0- 0 - 0 - 1 - 1
0 1 0 -1 10
ACARREO NEGATIVOHACIA LA SIGUIENTE
POSICION
Figura 3.6. Resta binaria
42
-
5/29/2018 Matematicas Para Programadores_William Barden
40/144
Probemos con algunos nmeros. Restemos 0001 0001 de 0011 1010, 17 de 58:
1 (Acarreo negativo)
0011 1010 (58)0001 0001 -(17)0010 1001 (41)
El uno encima del operando representa el acarreo negativo de la si-guiente 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 (42)0011 1111 (63)1110 1011 (??)
El resultado es 1110 1011, 235, un resultado que no nos esperbamos.Pero, espere; ipodra ser?, Les posible? Si aplicamos las reglas de la represen-tacin en complemento a dos y consideramos 1110 1011 como un nmeronegativo, entonces tenemos 00010100 despus de cambiar todos los unos porceros y todos los ceros por unos. Aadimos entonces uno para obtener0001 0101. El resultado es -21, si ponemos el signo negativo, lo cual es
correcto. iParece como si nos visemos forzados a usar los dichosos com-plemento a dos, queramos o no!
Representacin en complemento a dos
Hemos cubierto bastante bien todos los aspectos de la notacin en com-plemento a dos. Si el bit del extremo izquierdo de un valor de 8 16 bitsse considera el bit de signo, entonces ha de ser 0 (positivo) o 1 (negativo).
La representacin en complemento a dos puede, por consiguiente, obtenerseaplicando las reglas tratadas anteriormente: fijndonos en el bit de signo,cambiando todos los ceros por unos, todos los unos por ceros y aadiendouno.
Los nmeros se almacenan en forma de complemento a dos, como n-meros de 8 16 bits. El bit de signo ocupa siempre la posicin extrema de laizquierda y es siempre (1) para un nmero negativo.
43
-
5/29/2018 Matematicas Para Programadores_William Barden
41/144
Los formatos para la representacin en complemento a dos de 8 y 1se muestran en la figura 3.7.
7 6 5 4 3 2 1 0
I I I I I I IFORMATO DE 8 BITS
EN COMPLEMENTO A DOS
BIT DE SIGNO0 = POSITIVO1 = NEGATIVO
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
I FORMATO DE 16 BITS
EN COMPLEMENTO A DOS
BIT DE SIGNO0 = POSITIVO1 = NEGATIVO
Figura 3.7. Formatos de complemento a dos
Los valores de 8 bits se utilizan para desplazamientos en las inciones del microprocesador para modificar la direccin de un opeguardado en memoria. Los valores de 16 bits se emplean como variableteras en programas de BASIC. Por supuesto, cualquiera de ellos ser utilizado por el programador de BASIC o lenguaje ensamblador representar lo que desee.
Extensin del signo
Es posible sumar o restar nmeros en complemento a dos, uno de 8 yde 16 bits. Cuando se realizan estas operaciones, el signo del menormero debe extenderse hacia la izquierda hasta que ambos tengan la mlongitud; es decir, todas las posiciones necesarias para que el menor ntenga el mismo tamao que el mayor se rellenan con el bit de signesto no se hace, el resultado ser incorrecto. Tomemos, por ejemp
44
-
5/29/2018 Matematicas Para Programadores_William Barden
42/144
suma del valor de 8 bits 1111 1111 -l), y el valor de 16 bits 0011 11111111 1111 + 16,383). Si no se extiende el signo, tenemos:
0011 1111 1111 1111 + 16,383)1111 1111 ( -1)
0100 0000 1111 1110 (+ 16,638)
El resultado aqu es + 16,638; obviamente incorrecto. Si se extiende elsigno correctamente a todas las posiciones de la izquierda, sin embargo,tenemos:
0011 1111 1111 1111 ( + 1 6 , 3 8 3 )1111 1111 1111 1111 ( -1)0011 1111 1111 1110 + 16,382)
que es el resultado correcto.
Suma y resta en complemento a dos
Todos los microprocesadores usados en microordenadores tienen unainstruccin para sumar y otra para restar dos nmeros con signo de 8 bitsAdems, algunos microprocesadores permiten la suma y la resta de dos n-meros con signo de 16 bits.
Los dos operandos que aparecen en la suma o en la resta pueden tener
cualquier configuracin: dos nmeros positivos, uno positivo y otro negati-vo, o dos nmeros negativos. Al restar, hay que considerar la operacin dela siguiente manera: al nmero que se resta (sustraendo) se le invierte esigno haciendo su complemento a dos: cambiando todos los unos por cerostodos los ceros por unos, y aadiendo uno. Una vez hecho esto, la restaequivale a una suma del mismo nmero con el signo invertido. Pongamosun ejemplo. Supongamos que 1111 1110 (-2) se va a restar de 0111 0000+ 112). Primero se invierte el signo al sustraendo de 2. El complementoa dos de 1111 1110 es 0000 0010 (+ 2). Entonces, se hace la suma.
0111 0000 ($112)0000 0010 (+2)0111 0010 (+114)
Hay que tener claro que el microprocesador no realiza esta operacinde inversin antes de la resta. Esto es, simplemente, un medio adecuado para
45
-
5/29/2018 Matematicas Para Programadores_William Barden
43/144
ver lo que sucede en la resta, y tiene alguna relacin con las operaciode que hablaremos en el captulo siguiente.
Antes de tratar algunas particularidades de la suma y la resta, coerrores de desbordamiento y acarreos, y los indicadores de los microprosadores ordinarios, intente hacer alguno de los siguientes ejercicios adiestrarse en la suma y la resta en complemento a dos.
Ejercicios
1. Sume los siguientes nmeros sin signo, dando los resultados en binaridecimal.
01 0111 010101
l l 1111 101010
2. Reste los siguientes nmeros sin signo, dando los resultados en binaridecimal.
10 0111 1100
01 0101 0001
3. Halle los complemento a dos de los siguientes nmeros con signo, cuandonecesario, para obtener los nmeros decimales representados por:
01101111, 10101010, 10000000
4. iCul es la forma en complemento a dos de 8 bits de 1, -2, 3, +5,y +127?5. Extienda el signo de los siguientes nmeros de 8 a 16 bits. Escriba los nm
representados antes y despus.
01111111, 10000000, 10101010
6. Sume- 5 a - 300.(iNo,no, en binario !)7. Reste - 5 de 300 en binario.
46
-
5/29/2018 Matematicas Para Programadores_William Barden
44/144
Acarreos,errores de
desbordamientoe indicadoresEn este captulo ampliaremos algunos de los conceptos introducidos en
el anterior. Algunos de stos son sutiles y otros no tanto, y todos ellos serefieren a nmeros con signo. Analizaremos aqu algunos de ellos.
Este restaurante tiene una capacidadde 127 personas.i Evitando errores de desbordamiento!
Big Ed estaba sentado frente a una taza del famoso Java de Big Eddespus de haberse marchado la multitud de ingenieros; en ese momento,se abri la puerta del restaurante y entr un hombre uniformado.
Dgame, seor, ienqu puedo servirle?Pngame una taza de caf y un suizo, respondi el cliente.Veo que va de uniforme. iPertenece usted a las Fuerzas Areas de
Campo Moffett?, pregunt Ed.Na, soy transportista. Vine a esta zona en respuesta a un anuncio
que solicitaba especialistas en acarreos y errores de desbordamiento enInlog y, aunque no s lo que es un error de desbordamiento, puedo
49
-
5/29/2018 Matematicas Para Programadores_William Barden
45/144
acarrear lo que sea; as que pens que daba el tipo, pero el jefe de persose rio y me seal la puerta.
Creo que entiendo el problema, seor, dijo un cliente de constitudelgada que no aparentaba ms de catorce aos. Una tarjeta de referedel Z-80 sobresala del bolsillo de su camisa. Soy un programador
mucha experiencia en errores de desbordamiento.No saba que trabajabais en transportes.Bueno, nosotros manejamos el traslado de datos de los procesad
pero trabajamos bastante con el error de desbordamiento. Le imporle explico? El transportista arque las cejas y esper.
. . . despus de varias tazas de caf de Ed, el programador haba habdel sistema binario y de las operaciones aritmticas simples.
Como puede ver, se puede almacenar cualquier valor de 128 a +en 8 bits, o cualquier valor de 32,768 a + 32,767 en 16 bits. LEntendid
El transportista dijo : S, salvo los nmeros sin signo, en cuyo cas
extiende de 0 a 255 o de 0 a 65,535 2 t(N l), donde N es el tamdel registro en bits.Vaya, usted aprende rpido, dijo el programador. Ahora, continu
do... Si realizamos una suma o resta cuyo resultado sea mayor de +32o menor de 32,768 (o mayor de + 127 o menor de 128),iqu ocur
Bueno, supongo que se obtiene un resultado incorrecto, dijo el traportista
Es cierto, se obtiene un resultado incorrecto. El resultado es demasigrande en sentido positivo o negativo para poder ser almacenado en 16 bits. En este caso, se produce un error de desbordamiento porqu
resultado excede del valor que puede contenerse en 8 16 bits. Sin embahemos diseado un indicador de error de desbordamiento como partemicroprocesador. Este indicador puede examinarse por un programadorlenguaje ensamblador para ver si se ha producido un error de desdamiento despus de una suma o de una resta. Y resulta que, cuando plo mismo en operaciones sin signo, se produce un error de acarque es lo que tambin pedan en el anuncio. No slo tenemos un indicade error de desbordamiento, sino un indicador de acarreo, otro de sigotro de cero...
Espera un segundo. iQuieres decir que esa gente de personal quun ingeniero informtico especializado en aritmtica de microprocesares?, dijo el transportista con una mueca. iCreo que me han tomadpelo! iMe doctor en Fsica!iTiene usted un doctorado en Fsica ?,escupi Big Ed, esparciendmayor 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 traportista al salir por la puerta, moviendo la cabeza con pesadumbre.
-
5/29/2018 Matematicas Para Programadores_William Barden
46/144
Errores de desbordamiento
Como vimos en el ejemplo anterior, el error de desbordamiento es po-sible cada vez que se hace una suma o resta y el resultado es demasiadogrande 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 micropro-cesador. Una tpica instruccin de suma sumara los contenidos de un re-gistro de 8 bits, llamado acumulador, a los contenidos de otro registro o
posicin de memoria. Ambos operandos estaran en complemento a dos consigno. Enqu condiciones se producira el error de desbordamiento? Cual-quier resultado mayor de + 127 o menos de 128 dara lugar a error dedesbordamiento. Ejemplos:
1111 0000 (-16) 0111 1111 + 127)+ 1000 1100 (-116) 0100 0000 (+64)0111 1100 + 124 ino ) 1011 1111 (-80 ino )
Observe que, en ambos casos, el resultado era obviamente incorrectoy el signo era el contrario al verdadero. El error de desbordamiento slopuede ocurrir cuando la operacin consiste en sumar dos nmeros positivos,dos nmeros negativos, restar un nmero negativo de otro positivo o unopositivo de otro negativo.
El resultado de la suma o resta, en la mayora de los microprocesa-dores, sube (1) o baja (0) un indicador. Este indicador puede utilizarse en
un salt o condicional: un salto si huy error de desbordamiento o un saltosi no lo huy. La comprobacin se hace a nivel de lenguaje mquina y noen BASIC.
AcarreoOtra condicin importante es la de acarreo. Hemos visto cmo se usan
los acarreos en sumas de nmeros binarios, y cmo los acarreos negat i vosse emplean en restas. El acarreo que se produce por una suma es aquel quese produce a continuacin del dgito ms significativo del resultado. Unejemplo: supongamos que sumamos los dos nmeros siguientes:
1 1111 111 (Acarreos)
0111 1111 (+127)1111 1111 ( -1)0111 1110 + 126)
51
-
5/29/2018 Matematicas Para Programadores_William Barden
47/144
Los unos encima de los operandos representan los acarreos a guiente posicin. El acarreo de ms a la izquierda, sin embargo,fuera de las posiciones ocupadas por los bits. De hecho, al no coincon estas posiciones, pone el indicador del acarreo a 1 en el micropsador de que se trate. iEs til este acarreo? No mucho, en este ejemHabr un acarreo siempre que el resultado no sea negativo. Cuando
sultado cambia de 0000 0000 a 1111 1111, no se produce ningn acaComo este indicador puede comprobarse con un salto condicional, sacarreo o un salto condicional, si no hay acarreo a nivel de lenmquina, el estado del acarreo es til a veces. Tambin se utiliza para
plazamientos, que veremos ms adelante.
Otros indicadores
Los resultados de operaciones aritmticas como suma y resta estabgeneralmente otros dos indicadores en el microprocesador. Uno es el indor cero. Se pone a (1) cuando el resultado es cero, y se pone a (0) cel resultado no es cero. Se pondra a (1) para una suma de + 23 y se pondra a (0) para una suma de 23 y + 22. Puesto que constantecomparamos valores en programas en lenguaje mquina, el indicadorse maneja mucho en la prctica.
El indicador signo tambin se utiliza generalmente. Este se pono a 0 de acuerdo con el resultado de la operacin; refleja el valor den la posicin ms significativa.
El indicador de cero y el de signo pueden comprobarse en programlenguaje mquina por medio de saltos condicionales como salto si es salto si no es cero, salto si es positivo y salto si es negativo. Nque una condicin de positivo incluye el caso de que el resultado seaEl cero es un nmero positivo en la notacin en complemento a dos.
Indicadores en los microordenadores
Los indicadores en el microprocesador Z-80 son representativos
de todos los microprocesadores. Se muestran en la figura 4.1. Los indres del microprocesador 6809 son un segundo ejemplo de indicade un microprocesador cualquiera, como muestra la figura 4.2.
En la seccin siguiente analizaremos de forma detallada las operaclgicas y de desplazamiento, que tambin afectan a los indicadores. de empezar dicho captulo, no obstante, he aqu algunos ejercicios error de desbordamiento, acarreos e indicadores.
52
-
5/29/2018 Matematicas Para Programadores_William Barden
48/144
7 6 5 4 3 2 1 0
REGISTRO
FoF JS/ZI-IHl-IYIN/4
INDICADOR DE ACARREO
INDICADOR DE SUMA-RESTA
INDICADOR DE PARIDAD 0ERROR DE DESBORDAMIENTO
INDICADOR DE MEDIO ACARREO
INDICADOR DE CERO
INDICADOR DE SIGNO
REGISTRO DELCODIGO DE
Figura 4.1. Indicadores del microprocesador Z-80
7 6 5 4 3 2 1 0
LA CONDICION
E F H I N Z V C
INDICADOR DE ACARREO
l t1 MASCARA DE PETICIONINDICADOR DE ERROR DEDESBORDAMIENTOINDICADOR DE CEROINDICADOR NEGATIVO/L
;;;;;if;; cloNDE INTERRUPCION RAPIDAESTADO ENTERO ENLA PILA
Figura 4.2. Indicadores del microprocesador 6809
53
-
5/29/2018 Matematicas Para Programadores_William Barden
49/144
Ejercicios
1. iCules de las siguientes operaciones darn error de desbordamiento? su valor.
01111111 01111111 10101111
+ 00000001 0000000 1 + 11111111
2. iCules de las siguientes operacionesque ponga a (1) este indicador?
01111111
+ 00000001
produce un acarreo fuera del l
11111111
+ 00000001
3. Supongamos que tenemos un indicador Z (cero) y otro S (signo) en el m
procesador. iCules sern los estados (0,l) de los indicadores Z y S dede las operaciones siguientes?01111111 11011111
+ 10000001 10101010
54
-
5/29/2018 Matematicas Para Programadores_William Barden
50/144
5Operaciones
lgicas
y desplazamientosLas operaciones lgicas en microordenadores se utilizan para manipular
datos en base a un bit o un campo. Los desplazamientos tambin son tilespara 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 Si-licio. Este se dispona a ojear el peridico local, cuando oy un frenazo; unimponente autobs rojo de dos pisos se detena frente al restaurante. Las
puertas del autobs se abrieron y una docena o ms de personas se precipi-taron al exterior. Todas ellas aparecan vestidas con tweed, sombreros hongos
y otras prendas tpicamente britnicas. Uno incluso llevaba un paraguasnegro, y no paraba de mirar ansiosamente al cielo.
iHola iPuedo servirles en algo?Ms bien. iPuede 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, po-
demos poner a ocho de ustedes en la mesa A y a otros ocho en la B.
57
-
5/29/2018 Matematicas Para Programadores_William Barden
51/144
Uno de ustedes tendr que sentarse en una silla, cerca de la mesa A.silla de mi hija Carrie, pero creo que servir. Esto acumular..., ejacomodar a todosl.
Muy bien, dijo el portavoz; y el grupo llen las dos mesas y lextra (Fig. 5.1).
qFigura 5.1. Disposicin de los asientos
Caramba, nunca pens que hubiera tantos especialistas en informen Gran Bretaa, dijo Ed.
Tantos como yanquis, dijo el portavoz. iHa odo usted habTuring, el Proyecto Coloso para descifrar Enigmas, o los Tubos de Willi
Big Ed neg con la cabeza. Lo siento, no tengo ni idea.Est bien, yanqui. Vamos a ver: comamos primero, y luego asis
a una conferencia especia1 sobre microprocesadores y sus aplicaciocricket. Caballeros, ipuedenprestarme atencin, por favor?
Como ustedes saben, el Ministerio nos ha concedido fondos limpara este viaje. Por tanto, tenemos que poner ciertas restricciones muerzo de hoy. He echado un vistazo al men y he llegado a las siguconclusiones:
Uno. Pueden ustedes tomar caf (puaj) 0 t, pero NO ambosDos. Pueden tomar sopa 0 ensalada 0 ambos.Tres. Pueden tomar un sandwich 0 un plato combinado 0 una Sorpr
Big Ed.Cuatro. Si toman postre Y copa, deben pagar el suplemento a
nal. iAlguna pregunta?N . del T.: La nota de humor se desprende, en esta ocasin, del hecho de que C
carry (acumular, acarreo) se pronuncian en ingls de manera idntica.
58
-
5/29/2018 Matematicas Para Programadores_William Barden
52/144
Uno de los cientficos de edad ms avanzada habl. Vamos a ver. Sihe entendido bien, tenemos una 0 exclusiva del caf y del t; una 0 inclusivade la sopa y la ensalada; una 0 inclusiva del plato fuerte, y una Y del postrey de la copa con suplemento adicional. Correcto?
Correcto, Geoffrey. iBien, compaeros; al ataque!Este aire acondicionado me est dejando el cuello helado, dijo uno de
los jvenes ingenieros.Lo que tenemos que hacer entonces es rotar alrededor de la mesa A,
pasando por la silla extra, de modo que cada cual reciba por turno el airefro, dijo el portavoz. Cada vez que diga: ia rotar!, cambiaremos desilla una posicin.
LES realmente necesario pasar por mi silla?, pregunt el ingenierosentado en la silla extra.
Bueno, podemos elegir entre rotar pasando por la silla o sin pasar,pero creo que es ms justo hacerlo como he dicho.
A intervalos espaciados regularmente, a lo largo de la comida, el por-tavoz gritara: irotad , y el grupo de la mesa A y la silla extra se moveracomo muestra la figura 5.2. Finalmente, todo el grupo de la mesa A selevant, pag su cuenta y se fue.
\I Ht-LM_f-LH H N7/ SILLA DECARRIEFigura 5.2. El grupo rota
Creo que hemos acabado aqu, seor, dijo el grupo de la mesa B.Muy bien; entonces, desplazaos por orden hacia la izquierda por la
silla vaca, para que pueda ver vuestra cuenta, dijo el portavoz.El cientfico ms prximo a la caja se levant y ocup la silla vaca.
El portavoz examin la cuenta. iE siguiente!, exclam. La persona de la sillaextra fue hacia la caja, y la persona a continuacin ocup su lugar en la sillaextra. Este proceso continu hasta que la mesa B se vaci (vase la figura 5.3).
Excelente comida, dijo el portavoz a Big Ed al marcharse.Encantado de tenerles por aqu, dijo Ed. Espero que su seminario
de cricket tenga xito.Eso no nos preocupa demasiado; lo que nos preocupa son las araas,
59
-
5/29/2018 Matematicas Para Programadores_William Barden
53/144
B
A
HHHIIHklHH
Iclclclclnclclo SILLA DE CAJACARRIE REGISTRAD
Figura 5.3. El grupo se desplaza
dijo el portavoz, abriendo el paraguas y saliendo por la puerta al so
cielo de San Jos. iHasta la vista!Operaciones lgicas*
Todos los microordenadores son capaces de realizar las operalgicas de Y, 0 y 0 exclusiva a nivel de lenguaje mquina. Ademmayora de las versiones del BASIC permiten realizar la Y la 0.
Todas las operaciones lgicas trabajan bit a bit. No hay acarreos aposiciones. A nivel de lenguaje mquina, las operaciones lgicas se ej
en un byte de datos; el BASIC permite que las operaciones lgicas tlugar con operandos de dos bytes. Siempre hay dos operandos y usultado.
Operacin 0
La operacin 0 se muestra en la figura 5.4. Su tabla de verdatablece que habr un 1 en el resultado si uno de los operandos, o amtienen un 1.
La operacin 0 se utiliza, a nivel de lenguaje mquina, para po1 un bit. Una aplicacin tpica debera emplear los ocho bits de una cin de memoria como ocho indicadores para diversas condiciones, muestra la figura 5.5. La 0 no es tan ampliamente utilizada en BASIC
* N. del T.: Hemos decidido traducir las operaciones lgicas DND, OR, XOR ypor Y, 0, O,, y NO, respectivamente, para lograr una ms fcil comprensin del
60
-
5/29/2018 Matematicas Para Programadores_William Barden
54/144
00 00
0 1 1
0 1 0 0 0
1 1 1 RESULTADO
001101110 01011011 8 - B I T 0
01111111
Figura 5.4. Operacin 0
INDICADORES EN UNA POSICION DE MEMORIA
CUALQUIER BIT PUEDE PONERSEA UNO POR UNA OPERACION 0
0= NORMAL l1 = PELO
ALBOROTADO
0= NORMAL1 = INGENIERO
CHIFLADO
L 0 = MASCULINO 1 = FEMENINO0 = ALTO 1 = BAJO0 = PELO CASTAO1 = PELO NEGRO2 = PELO RUBIO3 = PELIRROJO4 = PELO BLANCO5 = PELO GRIS6 = PELO NARANJA
7 = CALVO0= NORMAL (HIJA)1 =SEPTIMO HIJO (HIJA) DE
UN SEPTIMO HIJO (HIJA)
0 0 1 0 0 1 0 0
0 1 1 0 0 0 0 0 0
I
SEPTIMO HIJO DE UN SEPTIMOHIJO, PELO NEGRO, ALTO,MASCULINO
4
1 1 1 0 0 1 0 0
Figura 5.5. Usando la operacin 0
PELO ALBOROTADO, INGENIEROCHIFLADO, SEPTIMO HIJO DE UNSEPTIMO HIJO, PELO NEGRO,ALTO, MASCULINO
61
-
5/29/2018 Matematicas Para Programadores_William Barden
55/144
su uso se requiere ocasionalmente cuando, por ejemplo, se ponen lode un byte de una memoria de video para mostrar minsculas, comotra la figura 5.6.
0
ESTE BIT ESUN UNO SI LAS LETRAS
SON MINUSCULAS
Figura 5.6. Ejemplo de 0
Operacin Y
La operacin Y se describe grficamente en la figura 5.7. Tambin nicamente a nivel de bit, sin acarreos a otras posiciones. El resultado es un 1 si ambos operandos son 1; si alguno tiene 0, el resultado es 0.
0 0 1
Y 0 Y 1 Y 0 Y 0 0 0 1
00110111
Y 01011011
00010011
8 BITS Y
Figura 5.7. Operacin Y
La Y se utiliza primordialmente en lenguaje mquina, para poneun bit o quitar ciertas partes de una palabra de 8 bits, como muesfigura 5.8. En BASIC, la operacin Y tiene aplicaciones ms limiLa figura 5.9 nos ofrece un ejemplo; comprueba los mltiplos de 32 econtador de 32 lneas por pgina.
62
-
5/29/2018 Matematicas Para Programadores_William Barden
56/144
0 0 1 ~ 0 0 1 0 0
Y 0 0 0 0 0 0 0 1
I0 0 0 0 0 0 0 0
Figura 5.8.
0 0 1011 10 1
0 0 0 1 1 1 1 1
I0 0 0 0 1 1 0 1
SEPTIMO HIJO DE UNSEPTIMO HIJO, PELO NEGRO,ALTO, MASCULINO
(MASCARA PARA COMPROBAR EL SEXO)
0 = MASCULINO1 =SI ES FEMENINOEjemplo de Y
LINEA DE CUENTA=45
MASCARA DE LA LINEA 32
=0, SI ES LA LINEA 32O, SI NO ES IA LINEA 32
Operacin 0
Figura 5.9. Otro ejemplo de operacin Y
exclusiva
La figura 5.10 muestra esta operacin. Sus reglas establecen que elresultado es un 1, si uno u otro bit, pero no ambos, son unos. En otraspalabras, si ambos bits son unos, el resultado es 0.
0
x 00
0 1
0 ex 1 Oex 0 Oex 1 1 0 RESULTADO
0 1 0 1 1 0 1 1 B I T
0 0 1 1 0 1 1 1 18 0 EXCLUSIVA
01101100
Figura 5.10. Operacin 0 exclusiva
no se utiliza con frecuencia en lenguaje mquina y enLa 0 exclusivaBASIC. La figura 5.11 muestra un ejemplo donde el bit menos significativo
63
-
5/29/2018 Matematicas Para Programadores_William Barden
57/144
se utiliza como un conmutador (toggle), para indicar el nmero de das: par o impar.
0 0 0 0 0 0 0 1 PASADA PREVIA= IMPAR
I0 ex 0 0 0 0 0 0 0 1
00000000 PASADA SIGUIENTE
0 ex 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1 PASADA SIGUIENTE
Figura 5.11. Ejemplo de 0 exclusiva
Otras operaciones lgicas
Hay otras operaciones lgicas que se realizan en BASIC y en lenmquina. Una de stas es la operacin NO. Es similar a la operaciinvertir el signo tratada en el captulo 4, salvo que sta da lugar al
plemento auno. El complemento a uno de un nmero se obtiene camdo todos los unos por ceros y todos los ceros por unos, sin aadir uniQu efecto produce ? Analicemos un ejemplo de un nmero con sign
Si realizamos la operacin NO sobre el nmero 0101 0101, obten1010 1010. El valor original era +85; el resultado es un nmero negque, una vez transformado por las reglas del complemento a dos, se
vierte en 0101 0101 + 1 = 0101 0110 = 86. Se podra decir, por que la operacin NO suma uno al nmero y entonces invierte el sLa versin en lenguaje mquina de la operacin NO se denohabitualmente CPL -para complemento a uno.
La operacin NOT de BASIC puede emplearse para comprobar cciones lgicas en un programa, como muestra la figura 5.12. El lenmquina CPL no se utiliza con frecuencia.
-
5/29/2018 Matematicas Para Programadores_William Barden
58/144
1 0 1 0 IF NOT (IMPRESORA) THENPRINT NO IMPRESORA-COMPRE UNA-ESPERARE
ELSE LPRINT RESULTADO=;AFigura 5.12. Operacin NO
Operaciones de desplazamiento
La reunin de los britnicos en el restaurante mostraba dos tipos dedesplazamiento comnmente utilizados en microordenadores: rotaciones ydesplazamientos lgicos. Son susceptibles de realizarse en lenguaje mquina,
pero no en BASIC, y generalmente operan en ocho bits de datos. Estnrelacionados 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 rotan a derecha oizquierda, una posicin cada vez. Aunque los ordenadores ms complejospermitirn cualquier nmero de desplazamientos con una instruccin, los mssimples slo permiten un desplazamiento por cada instruccin.
Como los datos rotan fuera de los lmites del registro del microproce-sador 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 pasana travs del acarreo, se trata en realidad de una rotacin de 9 bits. Si losdatos 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 elbit desplazado era un cero o un uno. La rotacin se utiliza para comprobarun bit de una vez para operaciones como multiplicacin (vase captulosiguiente) o el alineamiento de datos en una operacin Y.
Desplazamientos lgicos
El segundo tipo de desplazamiento reflejado en la ancdota del restau-rante era el lgico. Este no es una rotacin. Los datos caen fuera dellmite, de la misma forma que los cientficos se fueron del restaurante.
65
-
5/29/2018 Matematicas Para Programadores_William Barden
59/144
ROTACION HACIA LA DERECHA
ACARREO
ANTES
ACARREO
1 1 0 1 0 1 1 0c l
1 DESPUES
ROTACION HACIA LA IZQUIERDA A TRAVES DEL ACARREO A N T E SACARREO
cl 1 0 1 1 1 1 0 1Figura 5.13. Dos rotaciones
DESPUES
Cuando cada bit es desplazado, sin embargo, va al acarreo de forma
ste siempre almacena el resultado del desplazamiento. El lmite opuestoregistro o posicin de memoria se rellena con ceros a medida que se plaza cada bit. Aqu, de nuevo, se desplaza una posicin cada vezoperacin de desplazamiento lgico se muestra en la figura 5.14.
En realidad no podemos hablar mucho sobre la rotacin, relaciocon lo que sucede aritmticamente con el contenido. Esto se debe a qudatos vuelven a entrar en el registro y, en sentido aritmtico, los resultno se pueden predecir.
En el caso del desplazamiento lgico hacia la derecha o hacia la izquisin embargo, los resultados son plenamente previsibles. Observemos alg
ejemplos. Supongamos que tenemos el valor 0111 1111, con el acarreoteniendo un valor cualquiera. Mostraremos el registro y el acarreo con nbits con el acarreo a la derecha; es decir, 0111 1111 x. Despus deoperacin lgica de desplazamiento a la derecha tenemos 0011 1 ll 1 valor original era + 127; una vez producido el desplazamiento, el valo+63ms el acarreo. iParece como si un desplazamiento lgico a la derdividiera por dos y pusiera el resto de 0 1 en el acarreo! Esto es ci
66
-
5/29/2018 Matematicas Para Programadores_William Barden
60/144
y la operacin lgica de desplazamiento a la derecha puede utilizarse cadavez que se quiera dividir por 2, 4, 8, 16 u otra potencia de dos.Qu sucede con el desplazamiento a la izquierda? iEfectivamente Unaoperacin lgica de desplazamiento a la izquierda multiplica por dos. Porejemplo, tomemos x 0001 ll 11, donde x es el estado del indicador del acarreo.Despus del desplazamiento lgico a la izquierda, el resultado es 0 0011 ll 10.
El nmero original era + 31, y el resultado es +62 con el acarreo puestoa 0 por el bit ms significativo. El desplazamiento lgico a la izquierdase puede realizar cada vez que un nmero ha de multiplicarse por 2, 4,8 o cualquier otra potencia de dos.
DESPLAZAMIENTO LOGICO HACIA LA DERECHA
ACARREO
0 - 1 1 0 1 1 0 1 1J - c l
X ANTES
0 1 1 0 1 1 0 1 DESPUES
DESPLAZAMIENTO LOGICO HACIA LA IZQUIERDA
ACARREO
ANTES
DESPUESFigura 5.14. Dos desplazamientos lgicos
Desplazamientos aritmticos
Cuando se realiza un desplazamiento lgico con nmeros con signo,surge un problema. Consideremos el caso del nmero 1100 ll ll ;es unvalor de -49. Cuando el nmero se desplaza hacia la derecha, el resultadoes 0110 0111, representando el valor + 103. Obviamente, el desplazamientono dividi el nmero 49 por 2 para obtener un resultado de 24.
Para resolver el problema de desplazar datos aritmticos, se suele incluirun desplazamiento aritmtico en los ordenadores.
El desplazamiento aritmtico conserva el signo segn se desplaza a la de-recha, de forma que el desplazamiento es (casi) aritmticamente correcto.
67
-
5/29/2018 Matematicas Para Programadores_William Barden
61/144
Si se realizase un desplazamiento aritmtico en el ejemplo anterior, el rtado sera el que muestra la figura 5.15.
BIT DE SIGNO = 1 = NEGATIVO
A CA RREO1 1 0 0 1 1 1 1 X A NTES
t -491A CA RREO
1pp 1ojop Il/ b -l DESPUES-25
Figura 5.15. Desplazamiento aritmtico a la derecha
iQu sucede con los desplazamientos a la izquierda? En algunocroordenadores, el desplazamiento aritmtico a la izquierda mantiene de signo y desplaza el siguiente bit ms significativo al acarreo, como mtra la figura 5.16. En otros microordenadores no hay autnticos dezamientos a la izquierda.
BIT DEL SIGNO NO AFECTADO
A CA RREO I
A CA RREO
cl lllllllll1 1 0 0 1 1 1 1 0t-98
A NTES
DESPUES
Figura 5.16. Desplazamiento aritmtico a la derecha
En el prximo captulo veremos cmo el desplazamiento puede utilipara llevar a cabo muchos tipos diferentes de algoritmos de multiplicay divisin. Mientras tanto, intente contestar a las siguientes preguntas.
-
5/29/2018 Matematicas Para Programadores_William Barden
62/144
Ejercicios
1. Efecte la operacin 0 en los siguientes conjuntos de operandos binariosde 8 bits.
10101010 10110111
0 00001111 0 01100000
2. Realice la operacin 0 exclusiva en los siguientes operandos binarios de 8 bits.
10101010 10110111
o,, 00001111 o,, 01100000
3. Los bits 3 y 4 de una operacin de memoria tienen el cdigo siguiente:
OO = PELO CASTAO, 01 = PELO NEGRO, 10 = PELO RUBIO, ll == CALVO. Utilizando la operacin Y, muestre cmo estos bits pueden or-denarse en un nico resultado de 8 bits. La posicin es XXXYYXXX, dondeX = bit desconocido, e Y = bit de cdigo.
4. Invierta el signo de los siguientes operandos (con signo). Escriba sus equiva-lentes en decimal.
00011111, 0101, 10101010
5. Realice una rotacin a la izquierda sobre estos operandos:
00101111, 1ooooooo6. Efecte una rotacin a la derecha sobre los siguientes operandos:
00101111, 10000000
7. Efecte una rotacin a la derecha con acarreo sobre estos operandos yacarreos:
c = 1 00101111, c=o 10000000
8. Efecte una rotacin a la izquierda con acarreo sobre estos operandos yacarreos:
c =o 00101111, c = 1 100000009. Efecte un desplazamiento lgico a la derecha de los siguientes operandos.
69
-
5/29/2018 Matematicas Para Programadores_William Barden
63/144
Escriba el acarreo despus del desplazamiento, y el valor decimal de lorandos antes y despus de los desplazamientos:
01111111, 01011010, 10000101, 10000000
10. Efecte un desplazamiento lgico a la izquierda de los siguientes opera
Escriba el acarreo despus del desplazamiento, y el valor decimal de lorandos antes y despus de los desplazamientos:
01 ll 1111, 01011010, 10000101, 10000000
ll. Efecte un desplazamiento lgico hacia la derecha sobre los siguientesrandos, y escriba los valores decimales antes y despus del desplazamie
01111111, 10000101, 10000000
70
-
5/29/2018 Matematicas Para Programadores_William Barden
64/144
6Multiplicacin
y divisin
La mayora de los microordenadores actuales no incluyen instruccionesde multiplicacin y divisin. En consecuencia, estas operaciones han de ha-cerse en rutinas de software; al menos, en lenguaje mquina. En este cap-
tulo analizaremos algunas de las formas en que la multiplicacin y divi-sin pueden realizarse en software.
Zelda aprende cmo desplazar por s misma
iHola, Don! iQu tal la comida?, pregunt Zelda, la camarera, a uningeniero de Inlog que acababa de llegar a la caja
Bien, bastante bien. Bueno, la carne estaba un poco correosa...Sucede siempre que no es fresca, dijo Zelda cogiendo la cuenta.
Veamos; una taza de caf... un sandwich de carne... y doce postres bajosen caloras... Cada vez que Zelda lea una partida de la cuenta, realizabaalgn tipo de operacin fuera del alcance de la vista en la caja registradora.En la ltima partida, doce postres bajos en caloras, tard mucho tiempo.
Zelda, iquests haciendo?, pregunt el ingeniero.Vers, Don; Big Ed quiere que nos acostumbremos a trabajar en bi-
nario, ya que este restaurante est en el centro de las industrias de microor-73
-
5/29/2018 Matematicas Para Programadores_William Barden
65/144
denadores y todo eso. Quiere que hagamos todos los clculos en bpara que practiquemos. No me importa cuando se trata de sumar o pero la multiplicacin me vuelve loca.iQumtodo empleas, Zelda? Quiz pueda ayudarte.
Cada vez que multiplico, hago una suma sucesiva. Como en esteen que tenas doce postres. Cada uno cuesta 65 centavos, as que 1100, que es doce en binario, 65 veces.
S, eso realmente es correcto; de acuerdo, dijo Don, tratando rerse. Ese mtodo de suma sucesiva es vlido, pero lleva mucho tiPermteme que te ensee un mtodo ms rpido; se llama desplazamy suma.n
Rpidamente hizo sitio en el mantel de una mesa cercana, amnando un poco los cubiertos y dems objetos. Sac un portaminas. E
pena que no tengamos papel cuadriculado, pero los cuadros del mservirn.
Tomemos estos 65 centavos por postre para un ejemplo de docdades. Antes de nada, dibujaremos dos registros. El registro del prparcial tiene una amplitud de 16 bits; as (vase la figura 6.1). El rede los multiplicandos tiene una amplitud de 8 bits. Entonces, en losbits de arriba del registro del producto parcial pondremos los domul t i p l i cador . Lo hemos rellenado a ceros hasta ocho bits para o0000 1100. El resto del registro ser una serie de ceros. Seguidampondremos el multiplicando en el registro del multiplicando.
MULTIPLICADOR
ACARREO
L l - l00 0 0 1 1 0 0 0 0 0 0 0 0 0 0 REGISTRO DE PRODUCT
_
PARCIALES12)
SUMA
01000001 REGISTRO DELMULTIPLICANDO
65)Figura 6.1. Multiplicacin por desplazamiento y suma
Ya est todo preparado para hacer la multiplicacin. Daremospasos para ello. Los ingenieros informticos los denominamos iteracPara cada iteracin, desplazaremos el multiplicador una posicin haizquierda; el bit desplazado fuera ir al acarreo. Si el bit del acarreo es
74
-
5/29/2018 Matematicas Para Programadores_William Barden
66/144
sumaremos el multiplicando al registro del producto parcial. Si el bit delacarreo es un cero, no haremos la suma. Al final de las ocho iteraciones,estar hecho.
Pero, jnose destruir el contenido del multiplicador de ocho bits de arri-ba al sumar el registro del producto parcial?, pregunt Zelda, obviamenteorgullosa de haber aprendido un poco de la jerga de los ordenadores.
No, no se destruir. Recuerda que los datos se desplazan a fin de hacersitio para la posible expansin del producto parcial. Despus de ocho ite-raciones se habr desplazado totalmente, y el registro del producto parcialser el producto final de la multiplicacin. Mira, he dibujado todas lasiteraciones para este caso (vase la figura 6.2).
iOh, s! Muchas gracias, Don. Seguro que lo utilizar. Ahora, djame elresto de tu cuenta. El total es 15.63 ms los impuestos. Eso es 1563 cen-tavos dividido por cien veces seis. Veamos: 011000011011 menos 01100100da 010110110111; esto es una vez. 010110110111 menos 01100100 da
010101010011; esto es dos veces. Restando 01100100 a...
Algoritmos de multiplicacin
Sumas sucesivas
Zelda utilizaba un mtodo de multiplicacin sencillo, llamado suma su-cesiva (Fig. 6.3). En l, el multiplicando (nmero que ha de ser multiplicado)
es multiplicado por el multiplicador. El proceso se realiza haciendo cero unresultado llamado producto parcial y sumando el multiplicando al productoparcial por el nmero de veces indicado por el multiplicador. El ejemploanterior era 65 veces 12, que Zelda resolvi sumando 12 al producto parcial65 veces.
Aunque este mtodo es sencillo, es muy largo en la mayora de loscasos. Supongamos que trabajamos con una multiplicacin ocho por ocho.Una multiplicacin de 8 por 8 bits produce un resultado de 16 bit
top related