Está en la página 1de 107

Capítulo 2

Sistemas Numéricos

Ing. Martín Vernengo, 2018 ~ 2021.


mvernengo@gmail.com
Martin.Vernengo@unahur.edu.ar
Temario del Capítulo 2
Sistemas Numéricos:
Sistema decimal; Sistemas de base “r”. Sistema Binario. Conversión entre binario y decimal
(sin coma y con coma/fraccionarios). Los prefijos Kilo, Mega, Giga, Tera y su interpretación en
TEMA 2 Computación. Sistemas numéricos Octal y Hexadecimal: conversión a decimal y pasaje directo
a binario, utilidad en el contexto de una computadora binaria. Formatos BCD 8421, BCD 2421
y XS-3. Códigos ASCII y Unicode. Transmisión Serie y Paralelo, bit de paridad.
Operaciones con Números Binarios, Octales y Hexadecimales:
Sumas con Binarios, Octales y Hexadecimales. Números binarios negativos: “complemento a
1” y “complemento a 2”. Resta binaria utilizando el complemento a 2. Binarios “con y sin
signo”. Introducción al diagrama en bloques de un sumador binario de una ALU, función lógica
requerida para el sumador por bit (Full Adder). Multiplicación/División por 10 en decimal y
TEMA 3 Multiplicación/División, por “r” en base genérica y por 2 en binario. Multiplicación binaria.
Visualización de la necesidad de un “registro de desplazamiento” o “shift register” para la
implementación de multiplicaciones en una ALU. Formato de punto flotante o “floating
point”: necesidad, características generales (idea general sobre el formato floating point IEEE
754). Operaciones con Floating Point.

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Sistemas Numéricos: el decimal
Partamos de un ejemplo, el número 724,5 en el sistema decimal.
La posición de cada dígito en realidad nos indica una potencia de 10:

,
¿Cómo sabemos que es potencia de 10? En realidad no lo sabemos con certeza pero…
LA POTENCIA DE 10 ESTÁ IMPLÍCITA PORQUE TODO EL MUNDO TIENE 10 DEDOS
Y ESE ES EL ÚNICO MOTIVO POR EL QUE 10 ES LA “POTENCIA POR DEFECTO”
En general, un número decimal con n dígitos a la izquierda y m a la derecha se expresa :
7 2 4 , 5
… , …

10 10 … 10 10 10 10 10 … 10 10

Con lo que el número X representado en ese caso es entonces:


⋯ ⋯
7 2 4 , 5
En el ejemplo inicial, para 724,5:
n = 3, m = 1, = 7, = 2, = 4 y = 5.
Ejercicio - encuentre los valores de n, m, y todos los Ak para los
siguientes números: 1895,73 / 12,03712 / 0,10034 / 210927,32.
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Sistemas Numéricos: un sistema de base “r”
Por analogía, si la base fuera un número cualquiera “r” entonces otro número X se
podría poner también como:
… %
,
% …

% %
r

Con lo que en este caso general el número X representado sería:


& ⋯ & & & & & ⋯ &

En la primer expresión, la notación … indica que la base es r, de modo que el


724,5 con el que arrancamos debería haberse expresado como:
724,5

Ejercicio Resuelto: encuente el valor decimal de 312,4 $.

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Sistemas Numéricos: un sistema de base “r”
Por analogía, si la base fuera un número cualquiera “r” entonces otro número X se
podría poner también como:
… %
,
% …

% %
r

Con lo que en este caso general el número X representado sería:


& ⋯ & & & & & ⋯ &

En la primer expresión, la notación … indica que la base es r, de modo que el


724,5 con el que arrancamos debería haberse expresado como:
724,5
2 1 0 -1
Ejercicio Resuelto: encuente el valor decimal de 312,4 $.

SOLUCIÓN: ,
, ,

Ejercicio: encuente los valores decimales de 4231,42 $ , 524,5 ' ,


360,4 ) , 247,1 * , 30121,32 + , 231,0123 + .
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Cantidad de dígitos de un sistema de base “r”
Pregunta:
1) ¿Si en el sistema decimal (r = 10) la cantidad máxima de dígitos es justamente 10 y van
del 0 al 9, en un sistema de base “r”, cuántos dígitos debería haber y desde 0 hasta cuál
dígito debería ser posible escribir?
2) ¿Estaría correcto escribir los números: 4251,42 $ y 248,1 * ?

Ayuda: si por ejemplo quisiéramos escribir el número 5 en base r = 5, evidentemente


tendríamos que hacer la cuenta…

5 1 5 0 5 10 $

Conclusión: pareciera que el dígito 5 no es requerido


para un sistema de base 5, así como no hay dígito para
el 10 en base 10 (9 es el máximo), entonces…

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Sistema Binario (r = 2): conversión a decimal
En función de lo visto, para un sistema binario debe haber dos dígitos: 0 y 1:
,
… % %
%
2 2 2% 2 2 2 2 2 2 2 2

Con lo que en este caso general el número X representado sería:


%
2 2 ⋯ %2 2 2 2
%
2 2 %2 … 2 2

4 3210
Ejemplo:

Pero para ahorrar pasos es mejor memorizar las potencias de 2 al menos hasta el 12
para convertir más rápidamente de binario a decimal:
Ejemplos:
4 3 2 1 0

7 6 5 4 3 2 1 0

128 32 16 4 1 181

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Conversión binario a decimal cuando hay coma
¿Y si hay coma? ¿Cómo utilizamos la tabla? Por ejemplo el número 110101, 101 :
5 4 3 2 1 0 -1 -2 -3
1 1 0 1 0 1 , 1 0 1
2$ 2+ 2 2 2 2 %

32 16 0 4 0 1 0,5 0 0,125 53,625

1 1 1
2 0, 5 2 %
0,125
2 2% 8

Potencia Valor
2 0,50000000
2 0,25000000
2 % 0,12500000
2 + 0,06250000
2 $ 0,03125000
2 ' 0,01562500
2 ) 0,00781250
2 * 0,00390625

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Kilo, Mega, Giga, Tera… pero binarios
Volviendo a la tabla
de potencias de 2,
focalicemos en dos
exponentes: 10 y 20;
2 1024

Por pura coincidencia, la potencia 10 del sistema binario está extremadamente


próxima a la potencia 3 del decimal, que se conoce con el prefijo “Kilo” (“Kilogramos”)
y la potencia 20 del sistema binario con la potencia 6 del decimal, a la que se le asigna
“Mega” (“Mega Hertz”) pero en el mundo de la informática son levemente diferentes:
% “aproximadamente igual”
1- 2 1024 . 1000 10 ;
18 0488 576 1′000′000 10'

1/ 2 2 2 .2 2 1024 . 1000 ;
18 0738 7418 824 18 0008 0008 000 109
11 2% 2 2 .2 .2 2 %
1024% . 1000% ;
18 0998 5118 6278 776 18 0008 0008 0008 000 10
12 2+ 2 2 +
1024+ . 1000+ ;
Por eso cuando se habla de Kilo en el ámbito de la informática
queremos decir 1024, no “mil” y por ejemplo “64K” entonces sería
34 4 3 3 35′573 y no directamente 34′ ;
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Prefijos binarios: ejercicio resuelto 1
5 ;< _________ <=>?@;

Método 1: REGLA DE 3

1 KB ………………….. 1024 B
4 5
5 ;<………………….. D B ⇒D 5 <=>?@

Método 2: RAZONAR !!!

1 KB 1024 B

5 ;< 5 1 KB 5 1024 B 5 <=>?@


Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Prefijos binarios: ejercicio resuelto 2
5 <=>?@ _________ ;<;

Método 1: REGLA DE 3

1 KB ………………….. 1024 B
D ;<………………….. 5 B 5
⇒D , 4FF F ;<
4

Método 2: RAZONAR !!!

GH
1024 B 1024 < 1 KB ⇒ B
4
1024 pasa dividiendo

GH 5
5 < 5 1 B 5 ;< , 4FF F ;<
Ing. Martín Vernengo, 2021. 4 4
mvernengo@gmail.com
Conversión binario a decimal: ejercicios
Convertir de binario a decimal los siguientes números utilizando en lo posible la
memorización de la tabla de potencias de 2 siempre que el exponente sea hasta 10
(positivo o negativo) y buscando en la tabla para exponentes mayores:

1001101 ? 0,01100101 ?
1010011,101 ? 101101,00110111 ?
10101110,1001 ? 1000000110000,01011 ?
100011011001 ? 1010100001000011,10101 ?

Para los siguientes números decimales expresados con prefijos binarios que se usan
para indicar tamaños de memoria en bytes (por ejemplo) expresarlos directamente en
decimal o utilizando otro prefijo binario, según se pide en cada caso:
10 KB _________ Bytes; 10 KB _________ MBytes
16 MB _________ Bytes; 16 MB _________ GBytes;
16 MB _________ KBytes; 16 GB _________ TBytes;
32 GB _________ KBytes; 32 GB _________ TBytes
32 GB _________ MBytes; 12 TB _________ GBytes
32 GB _________ Bytes; 12 TB _________ MBytes

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Conversión binario a decimal: ejercicios (soluciones)
Convertir de binario a decimal los siguientes números utilizando en lo posible la
memorización de la tabla de potencias de 2 siempre que el exponente sea hasta 10
(positivo o negativo) y buscando en la tabla para exponentes mayores:

1001101 77 0,01100101 0,39453


1010011,101 83,625 101101,00110111 45,21484
10101110,1001 174,5625 1000000110000,01011 4144,34375
100011011001 2265 1010100001000011,10101 43075,65625

Para los siguientes números decimales expresados con prefijos binarios que se usan
para indicar tamaños de memoria en bytes (por ejemplo) expresarlos directamente en
decimal o utilizando otro prefijo binario, según se pide en cada caso:
10 KB 10′240 Bytes; 10 KB 0,009765625 MBytes
16 MB 16′777′216 Bytes; 16 MB 0,015625 GBytes;
16 MB 16′384 KBytes; 16 GB 0,015625 TBytes;
32 GB 33′554′432 KBytes; 32 GB 0,03125 TBytes
32 GB 32′768 MBytes; 12 TB 12′288 GBytes
32 GB 34′359′738′368 Bytes; 12 TB 12′582′912 MBytes

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Conversión decimal a binario: Ejemplo 1 (entero)
Se van sumando las potencias de 2 (de acuerdo a la tabla ya vista y memorizada en lo
posible) que sean más próximas SIN SUPERAR el número a convertir;
2$ 2+ 2% 2 2 2
Se efectúan restas sucesivas 1 0 1 1 0 1
para ir buscando qué
porción del número original 45 32 0 8 4 0 1
queda por ser cubierta con
potencias de 2. 45 Q 32 13

7Q 3R

13 Q 8 5

5Q4 1

Q R

1Q1 FIN!!!
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Conversión decimal a binario: Ejemplo 2 (entero)
2' 2$ 2+ 2% 2 2 2
1 0 0 1 1 0 0
S3 64 0 0 8 4 0 0

76 Q 64 12

Q7 R

Q 3R

12 Q 8 4

4Q4 FIN!!!

Q R

Q R
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Conversión decimal a binario: Ejemplo 3 (fraccionario)
Si son 4, F 5 ? ,
números
2% 2 2 2
con parte 1 1 1 0
entera y
fraccionaria, 4 8 4 2 0
es más
cómodo
hacer las 2 14 Q 8 6
partes por
separado.
6Q4 2

2Q2 FIN PARTE


% +
ENTERA!!!
2 2 2 2
Q R
0, 1 1 0 1
,F 5 0,5 0,25 0 0,0625
Potencia Valor
2 0,50000000
2 0,25000000
Q 0,5 0,3125
2 % 0,12500000
2 + 0,06250000
Q 0,25 0,0625 2 $ 0,03125000
2 ' 0,01562500
2 ) 0,00781250
Q , 5R 2 * 0,00390625

Ing. Martín Vernengo, 2021. 0,0625 Q 0,0625 FIN PARTE FRACCIONARIA!!!


mvernengo@gmail.com
El mismo ejercicio anterior visto de otra forma

14,8125 14 0,5 0,25 0,0625

4, FS5 ∶ UV W XY! [ \V]Y

14,75

14,5

14
12

14,8125 8 4 2 0 0,5 0,25 0 0,125 0,0625

1 1 %
1 +
1
2% 2 2 2 2 2 2 2
2 4 8 16

14,8125 1 1 1 0 , 1 1 0 1
14,8125 1110,1101
Pero, puede ocurrir que la cantidad de dígitos binarios necesaria siga incrementándose si
el número decimal fraccionario no se puede aproximar exactamente con la cantidad de
dígitos binarios máxima disponible para manejar con la computadora;
Por ejemplo, si sólo se disponen de 4 dígitos binarios después de la coma, tenemos que convertir
en forma aproximada el siguiente número: 14,8130 . 14,8125 1110,1101 ;
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Conversión decimal a binario: Ejemplo 4
Separamos parte entera y fraccionaria.

39861,41015625

, 43359375 ?

39861 ?

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Ing. Martín Vernengo, 2021.

Ejemplo 4: parte entera mvernengo@gmail.com

2 $ 2 + 2 % 2 2 2 29 2* 2) 2' 2$ 2+ 2% 2 2 2
1 0 0 1 1 0 1 1 1 0 1 1 0 1 0 1
39861 32768 0 0 4096 2048 0 512 256 128 0 32 16 0 4 0 1

Q 32768 7093
Q 37F4 R

QF ^ R

Q 4096 2997

Q 2048 949

Q 4R
949 Q 512 437
Q 256 181
Q 128 53
Q 34 R

53 Q 32 21

Q 16 5
QFR

5 Q4 1

Q R
FIN PARTE ENTERA!!! 1 Q1
Ejemplo 4: parte fraccionaria % + 2 $ 2 ' ) 2 *
2 2 2 2 2
0, 0 1 1 0 1 0 0 1
0,41015625 0 0,25 0,125 0 0,03125 0 0 0,00390625

Q ,5 R

Q 0,25 0,16015625

Q 0,125 0,03515625

Q , 3 5R

Potencia Valor
0,03515625 Q 0,03125 0,00390625
2 0,50000000
2 0,25000000
2 % 0,12500000
2 + 0,06250000 Q , 53 5 R
2 $ 0,03125000
2 ' 0,01562500
2 ) 0,00781250
2 * 0,00390625 Q , 53 5 R

0,00390625 Q 0,00390625
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com FIN PARTE FRACCIONARIA!!!
Conversión decimal a binario: ejercicios
Convertir de decimal a binario;
Nota: en el caso de los fraccionarios, aproxime con hasta 8 dígitos binarios a la derecha de la
coma, verificando si el resultado da exacto, e indique el error cometido si se usaran sólo 5 bits.
29 ? ; 857 ? ;
49 ? ; 859 ? ;
85 ? ; 905 ? ;
103 ? ; 953 ? ;
127 ? ; 1019 ? ;
128 ? ; 1023 ? ;
133 ? ; 1024 ? ;
198 ? ; 1040 ? ;
227 ? ; 1534 ?
255 ? ; 2872 ?
256 ? ; 11417 ?
258 ? ; 38924 ?
297 ? ; 3,1875 ? ;
323 ? ; 3,21875 ? ;
457 ? ; 19,23475 ? ;
506 ? ; 21,5625 ? ;
511 ? ; 27,625 ? ;
512 ? ; 45,4375 ? ;
514 ? ; 341,2265625 ? ;
555 ? ; 457,41796875 ? ;
13434,82421875 ?

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Conversión decimal a binario: ejercicios (soluciones)
Convertir de decimal a binario;
Nota: en el caso de los fraccionarios, aproxime con hasta 8 dígitos binarios a la derecha de la
coma, verificando si el resultado da exacto, e indique el error cometido si se usaran sólo 5 bits.
29 00011101 ; 857 1101011001 ;
49 00110001 ; 859 1101011011
85 01010101 ; 905 1110001001 ;
103 01100111 ; 953 1110111001 ;
127 01111111 ; 1019 1111111011 ;
128 10000000 ; 1023 1111111111 ;
133 10000101 ; 1024 1000000000 ;
198 11000110 ; 1040 10000010000 ;
227 11100011 ; 2872 101100111000
255 11111111 ; 11417 10110010011001
256 100000000 ; 27,625 11011,10100000 ;
258 100000010 ; 21,5625 10101,10010000 ;
297 100101001 ;
45,4375 101101,01110000 ;
323 101000011 ;
3,1875 11,00110000 ;
457 111001001 ;
3,21875 11,00111000 ;
506 111111010 ;
19,23828125 10011,00111101 ;
511 111111111 ;
341,2265625 101010101,00111010
512 1000000000 ;
457,41796875 111001001,01101011
514 1000000010 ; 13434,82421875
555 1000101011 ; 11010001111010,11010011
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Números Octales y Hexadecimales

Si bien las computadoras realmente utilizan


numeración binaria, es muy útil conocer las
numeraciones con bases 8 y 16, ya que nos permiten a
los humanos visualizar más rápidamente (y
escribiendo menos también) los números binarios;

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Números Octales y Hexadecimales
Incluso como usuarios de computadoras, nos topamos habitualmente con números
binarios expresados en formato hexadecimal u octal, que sirven para indicar “flags” o
“banderas” o bits especiales con los que el sistema operativo “señaliza” la ocurrencia
de ciertos eventos con una significación técnica.

Firma con problemas:


Nombre del evento de problema: BlueScreen
Versión del sistema operativo: 6.1.7601.2.1.0.256.48
Id. de configuración regional: 11274

Información adicional del problema:


BCCode: 50
BCP1: FFFFF88005BA1104
BCP2: 0000000000000000
BCP3: FFFFF88008105F37
BCP4: 0000000000000000
OS Version: 6_1_7601
Service Pack: 1_0
Product: 256_1

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Números Octales: pasaje directo a binario
Primeramente analicemos los octales de la misma forma que hasta ahora:
,
… % %
%
8 8 8% 8 8 8 8 8 8 8 8

donde los _ pueden valer cualquiera de los 8 dígitos del 0 al 7 (pero nunca 8 ó mayor!)
De hecho, NO NECESITO el dígito 8 en octal, como no se necesita el 2 en binario, ya que:
8 10 *
2 10 0,5
Con lo que en este caso general el número X representado en octal sería:
%
8 8 ⋯ %8 8 8 8
%
8 8 %8 … 8 8

2 1 0 -1 Ojo! El 8 y el 9 NO
Ejemplo: , , PUEDEN ESTAR en un
número en octal !!!

Sin embargo, para pasar Binario Octal


de octal a binario, la 0 0 0 0
operación es mucho 0 0 1 1 127,4 * 1 2 7 , 4 *
más simple, pasando 0 1 0 2
cada dígito octal a 0 1 1 3
binario según la tabla: 1 0 0 4 127,4 001 010 111 , 100
*
1 0 1 5
1 1 0 6 Ejercicio - verifique que efectivamente:
1 1 1 7 8 76 5 4 3 2 10 -1 -2 -3
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
001 010 111 , 010 87,5
Conversión binario octal decimal: ejemplo
Realice el pasaje directo a octal para el siguiente número binario, realizando las
conversiones binario octal y binario decimal, verificando que coinciden:
110 100,011 ? * ? ;
Solución:
binario octal decimal:
1 0 -1
110 100 , 011 64,3 * . 6 x 8 + 4 x 1 + 3 /8 52,375
6 4 3
Binario Octal 8 8
0 0 0 0 8
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7

binario decimal:
5 4 3 2 1 0 -1 -2 -3
1 1 0 1 0 0 , 0 1 1 1 2$ 1 2+ 0 1 2 0 0 0 1 2 1 2 %
52,375

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Cómo agregar los ceros para completar tripletes
Al tratarse de sistemas posicionales, cualquier agregado de ceros debe hacerse sin
modificar la posición de los 1’s existentes, es decir que no cambie la potencia a la cual
está elevada la base (8 en caso de octal);
Lo anterior implica que:
Para la parte entera, deben agregarse ceros siempre a la izquierda del 1 más significativo;
Para la parte fraccionaria, los ceros deben adicionarse a la derecha del 1 menos significativo.

Ejemplo: 1110,1 ? *

CORRECTO !!!
al agregar 2 ceros no se altera la
posición del 1 a la izquierda de la
coma y por ende no cambia la
potencia de 2;
En este ejemplo vemos que se
desplazó la posición del 1 a la
MAL !!! MAL !!! derecha de la coma de la posición
2-1 a 2-3: MAL!!!

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Pasaje decimal octal: ejercicio resuelto 1
Ahora vamos a realizar el ejercicio inverso al anterior: decimal octal;

52,375 ? *;
Solución: la gran diferencia entre los sistemas “no binarios” y el binario es que no se trata de
sumar potencias de la base (en el caso de octal “potencias de 8”) sino por cuánto hay que
multiplicar cada potencia de la base para “no pasarse” del número que se desea representar.
decimal octal:
52,375 A1 x 81 + A0 x 80 + A-1 x 8-1 = (A1 A0 , A-1)8
• Primer dígito: 7 8 56 i 52 ⇒ jk! 7 lmnopqolr s otlm!
6 8 48 R 52 ⇒ u;, ?v `ícd>a ae>fg 3

• Segundo dígito: 52,375 Q 6 8 4,375 ⇒ `a `ícd>a ae>fg 4

• Después de la coma: 4,375 Q 4 0,375


4 8 +⁄ 0,5 i 0,375 ⇒ jk! 4 lmnopqolr s otlm!
*

3 8 %⁄ 0,375 ⇒ u;, ?v `ícd>a ae>fg


*
después de la coma 7

Ing. Martín Vernengo, 2021. ⇒ 52,375 64,3 * u;‼!


mvernengo@gmail.com
Pasaje decimal octal: ejercicio resuelto 2
214 ? *;
Solución:
? ? ?
(214)10 = A2 x 82 + A1 x 81 + A 0 x 80 = (A2 A1 A0)8 = (3 2 6)8
• Primero tenemos que “cubrir al 214”:
82= 64 ==> 7 x 82= 448 me recontra paso del 214

4 x 82= 256 me paso… ó dividiendo por 64…
3 x 82= 192 < 214 ==> OK !!! ==> A2 = 3

Entonces la primera “resta” es: ? ?


214 - 3 x 82= 214 - 192 = 22 = A1 x 81 + A0 x 80

• Ahora tenemos que “cubrir al 22”:


81= 8 ==> 7 x 81= 56 me recontra paso del 22
… ó dividiendo por 8…
3 x 81= 24 me paso…
2 x 81= 16 < 22 ==> OK !!! ==> A1 = 2
• Última resta:
22 – 2 x 81= 22 – 16 = 6 = A0

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Pasaje decimal hexadecimal: ejercicio resuelto
714 ? ';

Solución:
? ? ?
(714)10 = A2 x 162 + A1 x 161 + A0 x 160 = (A2 A1 A0)16 = (2 C A)16
• Primero tenemos que “cubrir al 714”:
162= 64 ==> 15 x 162= 3840 me recontra paso del 714
… ó dividiendo por 256…
3 x 162= 768 me paso…
2 x 162= 512 < 714 ==> OK !!! ==> A2 = 2

Entonces la primera “resta” es: ? ?


714 - 2 x 162= 714 - 512 = 202 = A1 x 161 + A0 x 160

• Ahora tenemos que “cubrir al 202”: ó dividiendo por 16…


161= 16 ==> 15 x 161= 240 me recontra paso del 202

13 x 161= 208 me paso…
12 x 161= 192 < 202 ==> OK !!! ==> A1 = 12 = C
• Última resta:
202 – 12 x 161= 202 – 192 = 10 = A = A0

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Conversión binario - octal: ejercicios
Realice el pasaje directo octal binario (tabla memorizada!) cuidando que no haya ceros de más
ni a la izquierda ni la derecha (es decir minimizando la cantidad de bits necesarios para representar el número), y
luego la conversión de binario decimal, vía cálculo con potencias de 2 (memorizadas):
67 *
? ? ; 11,43 * ? ? ;
516 * ? ? ; 262,55 * ? ? ;
761 ? ? ; 36,6 * ? ? ;
*
167,14 * ? ? ;
361 *
? ? ;
741,716 *
? ? ;
161 ? ? ;
* 57,002 *
? ? ;
2170 *
? ? ; 3617,524 ? ? ;
*
1201 * ? ? ;

Realice el pasaje directo a octal para los siguientes números binarios, pero elija 3 casos
donde realice la conversión binario decimal octal verificando que coinciden:
100110 ? ? *; 10100110 ? ? *;
101111010 ? ? *; 1001 ? ? *;
1100110 ? ? *;
111100001 ? ? *;
101110,1 ? ? *;
110001000001 ? ? *;
10111001,11 ? ? *;
111100110 ? ? *;
1011110010,10101 ? ? *;
10001 ? ? *;
10,011101001 ? ? *;
11010110 ? ? *;
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Conversión binario - octal: ejercicios (soluciones)
Realice el pasaje directo octal binario (tabla memorizada!) cuidando que no haya ceros de más
ni a la izquierda ni la derecha (es decir minimizando la cantidad de bits necesarios para representar el número), y
luego la conversión de binario decimal, vía cálculo con potencias de 2 (memorizadas):
67 *
110111 55 ; 11,43 * 1001,100011 9,546875 ;
516 * 101001110 334 ; 262,55 * 10110010,101101 178,703125 ;
761 111110001 497 ; 36,6 * 11110,11 30,75 ;
*
167,14 * 1110111,0011 119,1875 ;
361 *
11110001 241 ;
741,716 *
111100001 , 11100111 481,90234375 ;
161 1110001 113 ;
* 57,002 *
101111 , 00000001 47,00390625 ;
2170 *
10001111000 1144 ; 3617,524 11110001111 , 1010101 1935,6640625 ;
*
1201 * 1010000001 641 ;

Realice el pasaje directo a octal para los siguientes números binarios, eligiendo 5 casos
donde realice la conversión binario decimal octal y verificando que coinciden:
100110 38 46 *; 10100110 166 246 * ;
101111010 378 572 * ; 1001 9 11 * ;
1100110 102 146 * ;
111100001 481 741 * ;
101110,1 46,5 56,4 * ;
110001000001 3137 6101 * ;
10111001,11 185,75 271,6 * ;
111100110 486 746 * ;
1011110010,10101 754,65625 1362,52 * ;
10001 17 21 * ;
10,011101001 2,455078125 2,351 * ;
11010110 214 326 * ;
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Números Hexadecimales
Como vimos, los octales nos permiten “comprimir” la numeración binaria de “3 a 1”, es
decir cada 3 dígitos binarios tenemos un dígito octal.
,
En el sistema hexadecimal, la compresión es aún mayor: 4 a 1;
Esto es lo que se logra con la base 16:

… % %
%
16 16 16% 16 16 16 16 16 16 16 16

Pero así como en decimal se requieren 10 dígitos del 0 al 9 en base 16 necesitamos igual cantidad de dígitos,
lo que nos obliga a utilizar LETRAS para los _ : 0 al 9 y luego A, B, C, D, E, F para los dÍgitos del 10 al 15:
10 A ' , 11 B ' , 12 C ' , 13 D ' , 14 E ' , 15 F '

Con lo que en este caso general el número X representado en hexadecimal sería:


%
16 16 ⋯ % 16 16 16 16
%
16 16 % 16 … 16 16

Ejemplo:
, ,

Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Números Hexadecimales: pasaje directo a binario
Utilizando una tabla de conversión similar a la ya vista para octal pero agrupando 4
dígitos binarios en lugar de 3, la conversión es inmediata:
Con octal habíamos visto que: 127,4 * 1 2 7 , 4 *

Binario Hexa
0 0 0 0 0
127,4 * 001 010 111 , 100
0 0 0 1 1
En hexadecimal, útilizando la tabla obtenemos: 0 0 1 0 2
0 0 1 1 3
B65F ' B 6 5 F ' 0 1 0 0 4
0 1 0 1 5
0 1 1 0 6
B65F ' 1011 0110 0101 1111 0 1 1 1 7
Ejercicio – Pase a decimal el número de este ejemplo partiendo del 1 0 0 0 8
valor binario y verifique que es el mismo que el obtenido en la 1 0 0 1 9
página anterior, 46687 .
1 0 1 0 A
Otro ejemplo: 3 2 1 0 -1 -2 -3 1 0 1 1 B
1 1 0 0 C
1 1 0 1 D
Ejercicio – Pase a decimal el número de este último ejemplo, tanto
partiendo del valor hexadecimal como del binario. 1 1 1 0 E
{mp|}mp~o: 2€6• , ‚06 ' 11371,93896484375 1 1 1 1 F
Ing. Martín Vernengo, 2021.
2 x 163 + 12 x 162 + 6 x 16 + 11 + 15/16 + 0/256 + 6 x 16-3
mvernengo@gmail.com
Conversión binario - hexa: ejercicios
Realice el pasaje directo hexadecimal binario (tabla memorizada!) decimal (elegir 5 casos
donde se haga la conversión directa de hexa a decimal y binario a decimal, comparando):
8A '
? ? ; 7C03 ' ? ? ;
3C ' ? ? ; 8,D3 ' ? ? ;
ABE ? ? ; B2,55 ' ? ? ;
'
21C, 18 ' ? ? ;
1D8 ? ? ;
' 1E3C,E36 ' ? ? ;
A4BD '
? ? ;

Realice el pasaje directo octal binario hexadecimal (sugerencia: reagrupe los bits de
grupos de 3 a grupos de 4):
67 ? ? '; 161 *
? ? ';
*
516 * ? ? '; 2170 ? ? ';
*
761 *
? ? '; 1201 * ? ? ';

361 ? ? ';
11,43 * ? ? ';
*

Realice el pasaje directo a binario hexadecimal (tabla memorizada) decimal (cálculo):


100110 ? ' ? ; 10100110
? ' ? ;
1100110 ? ' ? ;
101111010 ? ' ? ;
101110,1 ? ' ? ;
111100001 ? ' ? ;
10111001,11 ? ' ? ;
110001000001 ? ' ? ;
1011110010,10101 ? ' ? ;
111100110 ? ' ? 10,011101001 ? ' ? ;
10001 ? ' ? ;
11010110 ? ' ? ;
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Conversión binario - hexa: ejercicios (soluciones)
Realice el pasaje directo hexadecimal binario (tabla memorizada!) decimal (elegir 5 casos
donde se haga la conversión directa de hexa a decimal y binario a decimal, comparando):
8A '
10001010 138 ; 7C03 ' 11111000011 31747 ;
3C ' 111100 60 ; 8,D3 ' 1000,11010011 8.82421875 ;
ABE 101010111110 2750 ; B2,55 ' 10110010,01010101 178,33203125 ;
'
21C, 18 ' 100011100,00011 540,09375 ;
1D8 111011000 472 ;
' 1E3C,E36 ' 1111000111100,11100011 11
A4BD '
1010010010111101 42173 ; 774,088818359375 ;

Realice el pasaje directo octal binario hexadecimal (sugerencia: reagrupe los bits de
grupos de 3 a grupos de 4):
67 110111 37 '; 161 *
1110001 71 ';
*
516 * 101001110 14E '; 2170 10001111000 478 ';
*
761 *
111110001 1F1 '; 1201 * 1010000001 281 ' ;
361 11110001 F1 ';
11,43 * 1001,100011 9,8C ';
*

Realice el pasaje directo a binario hexadecimal (tabla memorizada) decimal (cálculo):


100110 26 ' 38 ; 10100110 A6 ' 166 ;
1100110 66 ' 102
101111010 17A ' 378 ;
101110,1 2E,8 ' 46,5 ;
111100001 1E1 ' 481 ;
10111001,11 B9, C ' 185,75 ;
110001000001 C41 ' 3137 ;
1011110010,10101 2F2,A8 ' 754,65625 ;
111100110 1E6 ' 486 ; 10,011101001 2,748 2,455078125 ;
'
10001 11 ' 17 ;
11010110 D6 ' 214 ;
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Formato BCD (Binary Coded Decimal)
No debe confundirse este formato con un sistema numérico más, como sí lo son el
decimal, el decimal, binario, octal, hexadecimal u otros que se pueden definir;
El BCD es una forma de codificación BINARIA del sistema de numeración DECIMAL, de
manera que una computadora digital pueda representar internamente los números
para su presentación en forma “amigable” para los humanos;
Un número binario de n bits permite representar 2 números:
Del 00 … 000 al 11 … 111 2 -1, son 2 pues son 2 x 2 x … x 2 combinaciones;
n bits n bits n decisiones de 0 ó 1
(2 posibilidades cada una).

En el sistema BCD, utilizamos n = 4 bits para Dígito


representar solamente 10 de las 2+ = 16 Símbolo
posibilidades (que de hecho en hexadecimal Decimal BCD
van del 0, 1, …, 8, 9, A, B, C, D, F);
Cuando se desea representar un número
decimal de más de un dígito, simplemente se
ubican 4 dígitos BCD por cada dígito decimal:

Como se puede apreciar, el formato BCD es


mucho menos eficiente que el sistema binario
en términos de cantidad de bits (en este
ejemplo se requieren 12 bits para representar
lo que en binario alcanza con 8).
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Otros formatos BCD
A partir del formato BCD clásico (página anterior), también denominado “BCD 8421”
pues éstos son los pesos de los 4 bits utilizados, en los inicios de la computación y
sobretodo de las primeras calculadoras electrónicas se crearon formatos alternativos;

El objetivo de estos formatos era permitir que las calculadoras electrónicas realizaran
operaciones de suma y resta de una manera más eficiente, debido a que como se
puede observar tanto en el código “Exceso 3” (XS-3) como el Aiken 2421, todos los
números que en decimal suman 9 tienen los bits 1 y 0 intercambiados;
Aquí no explicaremos el motivo, pero esto termina facilitando las operaciones cuando se
realizan directamente en BCD y no en binario como haremos en las próximas páginas.
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Resumen: comparación decimal, binario, octal, hexa, BCD
Para representar números del 0 al 15 decimal:

Decimal Binario Octal Hexadecimal BCD (8421)

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Cómo representar caracteres con binarios: Códigos ASCII
ASCII = “American Standard Code for Information Interchange”, y se lee “aski”;
No es el único estándar para representación de caracteres (el otro también importante históricamente ha sido
el “EBCDIC”, pronunciado “ebkidik” y que usaban los primeros “mainframes” de IBM );
El ASCII un código de 7 bits (en la tabla abajo indicados como •) •' •$ •+ •% • • , con los 3 más significativos
en las columnas y los 4 menos significativos en las filas, con el carácter representado en la intersección);
Como las computadoras normalmente manejan 8 bits, se agrega el bit más significativo en 0, pero con la
posibilidad de ponerlo en 1 para indicar otros códigos adicionales no previstos en el ASCII estándar, por
ejemplo: las letras griegas o las letras con acentos;

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Ejercicios de codificación con ASCII
Como ejemplo vemos que letra “A” es el 0100 0001 41 ' 65 ;
Ejercicios – verifique con la tabla los siguientes códigos hexa y páselos a decimal:
Las letras mayúsculas van de la “A” = 41 ' a la “Z” = 5 ' ;
Las letras minúsculas van de la “a” = 61 ' a la “Z” = 7 ' ;
Los caracteres para dígitos decimales que van del 0 al 9 tienen códigos del 30 ' al 39 ';
A7 A6 A5 A4 A3 A2 A1 A0 1+7 = 8 bits = 1 byte
0 1 0 0 0 0 0 1

4 bits A6 A5 A4
A3 A2 A1 A0 3 bits

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Caracteres ASCII de control
Los caracteres en las columnas con •) •' •$ = 000 y 001 no se imprimen directamente sino
que generan un comportamiento específico durante la impresión (impresora/ pantalla);
Ejemplos destacados (Ejercicio: verifique los códigos abajo indicados según la tabla):
CR = 0D ' 13 = “Carriage Return”, “el carro de impresora retorna a primer columna (pantalla)”;
LF = 0A ' 10 = “Line Feed”, “avanzar una línea de la impresora (pantalla)”;
SP = 20 ' 32 = = “SPace”, espacio en blanco, impresora o cursor saltea una posición (= control);

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Caracteres ASCII de control (Listado)
Existen además otros caracteres para manejar la información, por ejemplo dentro de
archivos (= información normalmente almacenada magnéticamente), ejemplo: FS;
También existen caracteres para transmisión de información en forma de texto entre dos
puntos (Ejemplo: STX, ETX).

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Código ASCII y su extensión con UNICODE
El código ASCII se ideó para representar caracteres solamente utilizados en el idioma
inglés, pero a medida que fueron pasando los años se visualizó la necesidad de contar con
un código de más de 1 byte que permitiera satisfacer las necesidades globales;
El código utilza tanto com 4 bytes (32 bits);
Los primeros 128 códigos correspondientes a los 7 bits de ASCII coinciden con el propio
ASCII en Unicode, se los indica como U+0000 0000 al U+0000 007F, ya que 7F en hexa son
7 bits en 1, es decir están cubiertas todas las combinaciones de ASCII.
Para el código conocido como UTF-32 se usan siempre 32 bits fijos, en cambio los códigos
UTF-8 y UTF-16 utilizan longitud variable de 8 a 32 y 16 a 32 bits respectivamente;
Para los códigos hexa por arriba del 0000 007F, la longitud del código es variable, pudiendo utilizarse la
siguiente tabla para entender la longitud que queda definida (caso UTF-8).
Por ejemplo: en la segunda línea de la tabla, vemos que la cantidad de bits realmente utilizados para código
son 11, ya que 7FF ' 111 1111 1111 , pero que se utilizan 2 bytes donde los tres bits más significativos
del byte más significativo valen 110 y los dos bits más significativos del byte menos significativo valen 10 (esto
permite identificar a la computadora que recibe el código qué estamos en la segunda fila de la tabla) y luego los
11 bits indicados con “x” son los que llevan el código del carácter propiamente dicho.

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Transmisión Serie y Paralelo – Bit de Paridad
En la figura se indican las dos modalidades de intercambio o transmisión de bits;
Siempre que posible, es mejor realizar la LSB
transmisión paralelo, ya que evidentemente se
realiza mucho más rápidamente al realizarse en
forma simultánea; TRANSMISIÓN
Ejemplo: dentro de una CPU, donde el conjunto de bits PARALELO
transmitidos en paralelo se conoce como “bus” de datos;
Otro ejemplo: cables muy cortos como los antiguamente
utilizados entre computadora e impresora antes de la
generalización del USB (“S” = “Serial”).

Sin embargo, a veces no es posible realizarla ya 01100101


que se complica el encaminamiento línea por MSB
línea largas distancia, el costo de los cables e
incluso por la interferencia electromagnética de
TRANSMISIÓN
líneas adyacentes que genera errores;
SERIE
Justamente para solucionar el problema de los
errores, una de las muchas técnicas es el “bit de
paridad”:
BYTE A TRANSMITIR BYTE TRANSMITIDO
ANTES DE AGREGAR PARIDAD CON PARIDAD PAR CON PARIDAD IMPAR

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Sumas decimal, binaria, octal, hexa… (comparadas)
Esta sección es MUY importante para poder luego más adelante entender cómo funciona
la ALU (Unidad Aritmético Lógica en su sigla en inglés) de una CPU;
Los ejemplos abajo muestran operaciones de suma decimales y sus correspondientes
binarias, donde el “carry” sería el término en inglés para el “me llevo 1”:
Decimal Binario Octal Hexa
"Carry" 1 0 0 0 0 1 0 0 0 0 0
Sumando 1: 1 3 1 1 0 1 1 5 D
Sumando 2: + 1 7 + 1 0 0 0 1 + 2 1 + 1 1
Resultado: 3 0 1 1 1 1 0 3 6 1 E

3 7 10 1 1 2 10
D 1 ' 0E '

5 1 * 06 *

Decimal Binario Octal Hexa


"Carry" 1 0 1 1 1 1 1 0 1 0 1 0
Sumando 1: 3 1 1 1 1 1 1 3 7 1 F
Sumando 2: + 1 9 + 0 1 0 0 1 1 + 2 3 + 1 3
Resultado: 5 0 1 1 0 0 1 0 6 2 3 2

1 1 2 10 F 3 15+3
1 9 10 '
1 1 1 3 11 16+2 12 '
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com 7 3 * 10 12 *
Suma binaria – Ejercicios
Partiendo de la suma planteada en decimal, realizarla y luego pasando los sumandos a
binario, realizar la suma en ese sistema, convirtiendo el resultado primero a hexadecimal y
luego a decimal nuevamente (para verificar el primer resultado).
Resuelto:
Decimal Binario
"Carry" 0 1 0 1 1 1 1 1 1 0 0
Sumando 1: 1 0 6 = 64 + 32 + 8 + 2 1 1 0 1 0 1 0
Sumando 2: + 5 5 = 32 + 16 + 4 + 2 + 1 + 1 1 0 1 1 1
Resultado decimal: 1 6 1 Resultado binario: 1 0 1 0 0 0 0 1
hexa: A 1
decimal (verif.): = 10 x 16 + 1 = 161
Resuelto:
Decimal Binario
"Carry" 1 1 0 000010110
Sumando 1: 1 3 7 = 128 + 8 + 1 89
10001001
Sumando 2: + 7 5 = 64 + 8 + 2 + 1 + 01001011
4B
Resultado decimal: 2 1 2 Resultado binario: 11010100
hexa: D 4
decimal (verif.): = 13 X 16 + 4 = 212
Resuelto:
Decimal Binario
"Carry" 1 1 0 111000110
Sumando 1: 1 8 5 = 128 + 32 + 16 + 8 + 1 B9 1 0 1 1 1 0 0 1
Sumando 2: + 9 9 = 64 + 32 + 2 + 1 + 4B 0 1 1 0 0 0 1 1
Resultado decimal: 2 8 4 Resultado binario: 000100011100
hexa: 1 1 C
Ing. Martín Vernengo, 2021. decimal (verif.): = 1 x 256 + 1 X 16 + 12
mvernengo@gmail.com
=
Suma binaria – más ejercicios
Decimal Binario
"Carry"
Sumando 1: 1 4 5
Sumando 2: + 1 2 3 +
Resultado decimal: Resultado binario:
hexa:
decimal (verif.): =

Decimal Binario
"Carry"
Sumando 1: 1 5 7
Sumando 2: + 3 3 +
Resultado decimal: Resultado binario:
hexa:
decimal (verif.): =

Decimal Binario
"Carry"
Sumando 1: 3 3 4
Sumando 2: + 2 2 5 +
Resultado decimal: Resultado binario:
hexa:
Ing. Martín Vernengo, 2021.
decimal (verif.): =
mvernengo@gmail.com
Números binarios negativos
Hasta aquí hemos visto números binarios de diferentes cantidades de dígitos, llamemos
“n” a esa cantidad y veamos algunos ejemplos:
t 2: t 4: t 6: t 8: t 16:
10 0110 010110 01010110 0101101101010110

Ahora bien, en cada CPU en particular, hay una cantidad máxima de bits n almacenados en
cada posición de memoria, que se conoce como “palabra de memoria”; típicamente
cuando n = 8 bits esa palabra de memoria recibe el nombre de “octeto” o “byte”;
En este contexto, si quisiéramos efectuar una resta dentro de la ALU, la metodología sería
definir números negativos binarios que pudieran ser representados también con n bits;
Y luego, una resta como X-Y no sería otra cosa que sumar un negativo: X + (-Y);
t 2: t 4: t 6: t 8: t 16:
Q10 Q0110 Q010110 Q01010110 Q0101101101010110
Sin embargo, el signo menos implica tener un tercer símbolo a almacenar en la CPU;
Y dentro de una CPU sólo tenemos 2 símbolos, el 0 y el 1, no existe posibilidad de un tercero;

Entonces, se decidió que para representar un número negativo es el bit más significativo
del mismo debe valer 1. Es así que para n = 8 bits:
1010110 sería considerado positivo y 1111001 sería considerado negativo;
No obstante, la representación de un número negativo –X a partir de un número positivo
X no se hace de ninguna manera poniendo simplemente el bit más significativo en 1:
…p lm†q , |r m‡mn|ˆr: Q00111010 ‰ 10111010
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
“Complemento a 1” de un número binario
La razón por la que un “número binario negativo” no puede ser simplemente obtenido
cambiando a 1 el bit más significativo es que justamente para que funcione como
negativo debe cumplirse que la suma con su opuesto dé cero, concretamente:
Q 0
Y en el ejemplo de la página anterior, esto vemos que claramente no ocurre:
"Carry" 0 0 1 1 1 0 1 0 0
X = 0 0 1 1 1 0 1 0
-X = + 1 0 1 1 1 0 1 0
X + (-X ) 0 1 1 1 1 0 1 0 0
descartado pues la palabra de 8 bits OK pero ‰ 0
memoria tiene longitud 8 y no mayor!

Para poder definir a partir de un número cualquiera otro Q tal que sumado al primero
dé cero es que definimos primeramente el “complemento 1” de :
Complemento a 1 de : \ Q Q ;
Por ejemplo, para el número del ejemplo de arriba: 0011 1010 3A '
3 16 10 58 , y ya que n = 8, el complemento a 1 sería:
€ 2 Q1Q 2* Q 1 Q 58 256 Q 1 Q 58 197
128 64 4 1 1100 0101
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Obtención del “Complemento a 1”
Comparemos al número de la página anterior y a su complemento a 1 bit a bit:
0011 1010
€ 1100 0101
Conclusión: el complemento a 1 se obtiene invirtiendo todos los bits del número original
(de ahí el nombre complemento a 1), lo que ya vimos que se corresponde con la
compuerta NOT que definimos durante la Introducción;
Este resultado es lógico ya que 2 Q 1 = 2* Q 1 255 11111111 ;
Por lo tanto restar de un número con todos sus bits en 1 al número , es decir al
calcular € 2 Q1 Q estaremos intercambiando 1s con 0s;
De esta manera, para obtener el complemento a 1 de un número, simplemente lo que
tenemos que hacer es aplicar una “operación NOT bit a bit” sobre , lo que ya vimos que
se puede realizar con un solo transistor de la computadora:
Con lo que podremos escribir:
€ 2 Q1Q NOT X R +
5V

= 1
0
0
1

Entrada = 1 bit de :
5 Volt = “1”
0 Volt = “0” Salida = 1 bit de € :
0 Volt = “0”
Ing. Martín Vernengo, 2021. 5 Volt = “1”
mvernengo@gmail.com
Del “Complemento a 1” al “Complemento a 2”
Pero la pregunta que nos queda es: será el “complemento a 1” el número “negativo”
que buscamos, es decir aquél que cumple que Q 0 ? Veamos:
"Carry" 0 0 0 0 0 0 0 0 0
X = 0 0 1 1 1 0 1 0
NOT(X ) = + 1 1 0 0 0 1 0 1
X + (-X ) 1 1 1 1 1 1 1 1 jk2 X 2 Q1

El resultado no es nulo, pero tampoco esto es para nada sorprendente, debido a la


propia definición que hicimos de complemento a 1: n
€ 2 Q 1 Q ⇒ € X 2 Q1 1111 … . . 1

Sin embargo, si definimos “Complemento a 2” como:


€ 2 Q € 1 ⇒ € X 2 1 00000 … . . 0

descartado pues la palabra de


n bits en cero!!!
memoria tiene longitud n y no mayor!

⇒ Vemos que hemos logrado que los primeros n bits sean nulos y aunque quedó
un bit final no nulo, éste puede ser descartado ya que si se lo tuviera en cuenta,
el tamaño del número obtenido sería n+1 y excedería el tamaño de la palabra de
memoria (por ejemplo sería de 9 bits que es mayor que un byte).
Por lo tanto el Complemento a 2 es el número
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
binario negativo que estábamos buscando!
Resta de binarios con suma del “Complemento a 2”
En el siguiente ejemplo, restamos 19 de 21 en decimal y en binario, luego realizando la
misma operación mediante la suma del complemento a 2 de 19, suponiendo n = 6:
Así como el “Carry” debe interpretarse como “me llevo 1”, el “Borrow” se interpreta
como “le pido 1”, que se le resta al dígito a la izquierda del que “pide”;
Decimal Binario: n = 6 Binario: n = 6
"Borrow" 0 1 0 0 0 0 0 1 0 0 "Carry" 1 1 1 1 0 1 0
Minuendo: 2 1 0 1 0 1 0 1 0 1 0 1 0 1
6
Sustraendo: - 1 9 - 0 1 0 0 1 1 C2(19) = 2 -19 = 45 = 2D hex + 1 0 1 1 0 1
Diferencia: 0 2 0 0 0 0 1 0 1 0 0 0 0 1 0
Carry final descartado pues la palabra Bit más significativo nulo
memoria tiene longitud n = 6 y no 7! Indica que el resultado es positivo
En el ejemplo anterior el minuendo es mayor que el sustraendo y el resultado debe
interpretarse como positivo; ¿Y si ocurre lo inverso y restamos 21 de 19? Veamos:
Binario: n = 6
"Carry" 0 0 0 0 1 1 0
0 1 0 0 1 1
6
C2(21) = 2 -21 = 43 = 2B hex + 1 0 1 0 1 1
0 1 1 1 1 1 0 = - 2 = -R = 26 -R
Carry final nulo confirma que Bit más significativo = 1
=> R = 26 – (26 -R)
El resultado es negativo Indica que el resultado es negativo
El resultado es el correcto ya que:
2' Q 62 2
Resultado 11 1110 3E ' 3 16 14 62 2' Q 2 € 2 -2
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Ing. Martín Vernengo, 2021.

Procedimiento para la resta de binarios mvernengo@gmail.com

Ya vimos cómo es posible realizar una sustracción en binario a través del complemento a 2
del sustraendo, pero para poder hacerlo en una computadora es necesario que haya una
manera simple de obtener ese complemento.
La respuesta es que esto es muy fácil de lograr a partir del “Complemento a 1” (que ya
vimos que se obtiene con un simple intercambio de bits 1 por 0;
Y ya vimos que € “ 2 Q“ 2 Q1 Q “ 1 € “ 1 NOT “ 1, por lo
tanto para realizar la resta Q “ Q“ necesitamos simplemente un sumador
binario (que ya veremos cómo diseñar en su momento…) y un inversor de bits (NOT),
realizando los siguientes pasos:
1. Invertir todos los bits de “ para obtener € “ NOT “ ;
2. Sumar 1 al “complemento a 1” de “ para obtener € “ € “ 1 (Humano: verificar “ 2 Q “);

3. Realizar la suma € “ (Humano: 2 Q“) = 2 Q “));


4. Si el resultado tiene su bit más significativo en 0, es el resultado final positivo pues i “;
5. Si el resultado tiene su bit más significativo en 1, es porque R “, entonces se debe obtener el
valor positivo correspondiente (agregándole el signo menos al “mostrar en pantalla”) con la
misma operación que se hizo anteriormente:
€ {mp}ˆ~olr € {mp}ˆ~olr 1 NOT {mp}ˆ~olr 1;
La implementación en hardware de este procedimiento se verá cuando veamos el tema
de circuitos combinacionales, pero para entenderlo es importante primero ejercitar con
cálculos hechos “por humanos”;
Veamos dos ejemplos en las próximas páginas.
Procedimiento para resta de binarios (Ejemplo 1)
Decimal
Ejercicio – realizar la siguiente resta decimal "Borrow" 0 1 0
en binario, por el procedimiento de “suma Minuendo: 1 1 4
del complemento a 2 del sustraendo”:
Sustraendo: - 9 5 “
Solución: Diferencia: 0 1 9
Primero pasamos minuendo y sustraendo a binario:
“ 95 64 + 16 + 8 + 4 + 2 + 1= 0101 1111 ; 114 64 + 32 + 16 +2 = 0111 0010 ;

Pasos: NOT

1. Invertir todos bits de “ para obtener € “ : 3. Realizar la suma € “ ;


€ “ NOT “ 10100000 ; Binario: n = 8
"Carry" 1 1 1 0 0 0 0 0 0
2. Sumar 1 al “complemento a 1” de “para obtener
€ “ =€ “ 1; 0 1 1 1 0 0 1 0
€ “ + 1 0 1 0 0 0 0 1
Binario: n = 8 1 0 0 0 1 0 0 1 1
"Carry" 0 0 0 0 0 0 0 0 hexa: 1 3
MSB, bit
€ “ NOT “ 1 0 1 0 0 0 0 0 +significativo = 1 x 16 + 3 = 19 OK
+ 0 0 0 0 0 0 0 1
4. Si el resultado tiene su bit más
€ “ € “ 1 1 0 1 0 0 0 0 1 significativo en 0 (SÍ!) , es el resultado
hexa: A 1 final positivo pues i “;
19
= 10 x 16 + 1 = 161
Resultado
Verificación: € 95 2* Q
95 Bit +significativo nulo,
256 Q 95 161 OK! Carry descartado (n = 8) OK, X = 114 > 95 = Y
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com porque sería el bit 9
Procedimiento para resta de binarios (Ejemplo 2)
Ahora realizamos el mismo ejercicio invirtiendo minuendo con sustraendo, con lo que
tendría que darnos un resultado igual al anterior pero negativo:
95, “ 114 ⇒ Q “ Q19 € 19 2* Q 19 237
Solución:
Partimos nuevamente de los operandos en binario:
“ 114 64 + 32 + 16 +2 = 01110010 ; 95 64 + 16 + 8 + 4 + 2 + 1= 01011111 ;

Pasos: NOT

1. Invertir todos bits de “ para obtener € “ : 3. Realizar la suma € “ ;


€ “ NOT “ 10001101 ; Binario: n = 8
"Carry" 0 0 0 1 1 1 1 0 0
2. Sumar 1 al “complemento a 1” de “para obtener
€ “ =€ “ 1; 0 1 0 1 1 1 1 1
€ “ + 1 0 0 0 1 1 1 0
Binario: n = 8 0 1 1 1 0 1 1 0 1
"Carry" 0 0 0 0 0 0 1 0 hexa: E D
MSB, bit
8
€ “ NOT “ 1 0 0 0 1 1 0 1 +significativo = 14 x 16 + 13 = 237 = 2 -19 OK
+ 0 0 0 0 0 0 0 1 4. Si el resultado tiene su bit más
€ “ € “ 1 1 0 0 0 1 1 1 0 significativo en 0… NO!;
hexa: 8 E 5. Si el resultado tiene su bit más
significativo en 1 (SÍ!), es porque R“
= 8 x 16 + 14 = 142
Q19 2* Q 19
Verificación: € 114 2* Q 114 Resultado
256 Q 114 142 OK!
Carry descartado (n = 8) Bit +significativo = 1,
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com porque sería el bit 9 X = 95 < 114 = Y
Ejercicio: resta con resultado > 0
Realice la operación 81 – 25 en binario utilizando la suma con el complemento a 2 de 25,
suponiendo que se realiza en 8 bits.
Decimal
"Borrow" 0 1 0 Pasaje a binario de Minuendo:
Minuendo: 0 8 1 =
Sustraendo: - 2 5 C2 (25) =
Diferencia: 0 5 6
25 = Cálculo Complemento a 2 del Sustraendo:
Pasaje a Binario Sustraendo: "Carry"
25dec25a bin
bin == NOT(25)=
+ 0 0 0 0 0 0 0 1
C2 (25) =
hexa:
= x 16 + =

Suma Minuendo + Complemento a 2 Sustraendo:


"Carry"

+
binario:
hexa:
decimal (verif.): = x 16 + =
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Ing. Martín Vernengo, 2021.

Ejercicio: resta con resultado > 0 (solución) mvernengo@gmail.com

Decimal
"Borrow" 0 1 Pasaje a binario de Minuendo:
0
Minuendo: 0 8 1 = 64 +16 + 1
8
Sustraendo: - 2 5 C2 (25) = 2 -25 = 231 = 128 + 64 + 32 + 4 + 2 + 1
Diferencia: 0 5 6

25dec a bin =

Suma Minuendo + Complemento a 2 Sustraendo:


"Carry" 1 1 0 0 0 1 1 1 0
0 1 0 1 0 0 0 1
Carry descartado (n = 8)
+ 1 1 1 0 0 1 1 1
porque sería el bit 9
binario: 1 0 0 1 1 1 0 0 0
hexa: 3 8
decimal (verif.): = 3 x 16 + 8 = 56 OK
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Ing. Martín Vernengo, 2021.

Ejercicio: resta con resultado < 0 mvernengo@gmail.com

Realice la operación 25 – 81 en binario utilizando la suma con el complemento a 2 de 81,


suponiendo que se realiza en 8 bits.
Decimal
"Borrow" Pasaje a binario:
Minuendo: 2 5 =
Sustraendo: - 8 1 C2 (81) =
Diferencia: - 0 5 6
81 = Cálculo Complemento a 2 del Sustraendo:
Pasaje a Binario Sustraendo: "Carry"
81dec81
a bin
bin == NOT(81)=
+ 0 0 0 0 0 0 0 1
C2(81) =
hexa:
= x 16 + =

Suma Minuendo + Complemento a 2 Sustraendo:


"Carry"

+
binario:
hexa:
Ing. Martín Vernengo, 2021.
decimal (verif.): = x 16 + =
mvernengo@gmail.com
Ing. Martín Vernengo, 2021.

Ejercicio: resta con resultado < 0 (solución) mvernengo@gmail.com

Realice la operación 81 – 25 en binario utilizando la suma con el complemento a 2 de 25.

Decimal
"Borrow" Pasaje a binario de Minuendo:
Minuendo: 2 5 25 = 16 + 8 + 1
8
Sustraendo: - 8 1 C2 (81) = 2 -81 = 175 = 128 + 32 + 8 + 4 + 2 + 1
Diferencia: - 0 5 6
81 = 64 +16 + 1 Cálculo Complemento a 2 del Sustraendo:
Pasaje a Binario Sustraendo: "Carry" 0 0 0 0 0 0 0 0
81dec81
a bin
bin == 0 1 0 1 0 0 0 1 NOT(81)= 1 0 1 0 1 1 1 0
+ 0 0 0 0 0 0 0 1
1 0 1 0 1 1 1 1
hexa: A F
= 10 x 16 + 15 = 175
8
C2(81) = 2 -81 = 175 OK

Suma Minuendo + Complemento a 2 Sustraendo:


"Carry" 0 0 1 1 1 1 1 1 0
0 0 0 1 1 0 0 1
+ 1 0 1 0 1 1 1 1
binario: 0 1 1 0 0 1 0 0 0
hexa: C 8
8
Ing. Martín Vernengo, 2021. decimal (verif.): = 12 x 16 + 8 = 200 = 2 -56 OK
mvernengo@gmail.com
Ejercicio Adicional 1a (con resultado > 0):
Realice la operación 97 – 49 en binario utilizando la suma con el complemento a 2 de 49,
suponiendo que se realiza en 8 bits.

Decimal
"Borrow" 0 1 0 Pasaje a Binario Minuendo:
Minuendo: 9 7 97dec = bin
Sustraendo: - 4 9 C2(49) = 2^8 - = dec (método “C2 humano”)
Diferencia: 4 8
Cálculo Complemento a 2 Sustraendo (8 bits)
"Carry"
Pasaje a Binario del Sustraendo:
NOT(49) =
49dec a bin=
+
C2(49) = (método
“C2 digital”)
hexa:
comparar! = x16 + =

Suma Minuendo + C2(Sustraendo):


"Carry"

+
binario:

comparar! hexa:
decimal (verif.): = x16 + = =

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Ejercicio Adicional 1b (con resultado < 0):
Realice la operación 49 – 97 en binario utilizando la suma con el complemento a 2 de 97,
suponiendo que se realiza en 8 bits.

Decimal
"Borrow" Pasaje a Binario Minuendo:
Minuendo: 4 9 49dec = bin
Sustraendo: - 9 7 C2(97) = 2^8 - = dec (método “C2 humano”)
Diferencia: - 4 8
Cálculo Complemento a 2 Sustraendo (8 bits)
"Carry"
Pasaje a Binario del Sustraendo:
NOT(97) =
97dec a bin=
+
C2(97) = (método
“C2 digital”)
hexa:
comparar! = x16 + =

Suma Minuendo + C2(Sustraendo):


"Carry"

+
binario:

comparar! hexa:
decimal (verif.): = x16 + = = 2^8 - =

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Ejercicio Adicional 2a (con resultado > 0):
Realice la operación 112 – 23 en binario utilizando la suma con el complemento a 2 de
23, suponiendo que se realiza en 8 bits.

Decimal
"Borrow" 1 1 0 Pasaje a Binario Minuendo:
Minuendo: 1 1 2 112dec = bin
Sustraendo: - 2 3 C2(23) = 2^8 - = dec (método “C2 humano”)
Diferencia: 8 9
Cálculo Complemento a 2 Sustraendo (8 bits)
"Carry"
Pasaje a Binario del Sustraendo:
NOT(23) =
23 dec a bin=
+
C2(23) = (método
“C2 digital”)
hexa:
comparar! = x16 + =

Suma Minuendo + C2(Sustraendo):


"Carry"

+
binario:

comparar! hexa:
decimal (verif.): = x16 + = =

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Ejercicio Adicional 2b (con resultado < 0):
Realice la operación 23 – 112 en binario utilizando la suma con el complemento a 2 de
97, suponiendo que se realiza en 8 bits.

Decimal
"Borrow" Pasaje a Binario Minuendo:
Minuendo: 2 3 23dec = bin
Sustraendo: - 1 1 2 C2(112) = 2^8 - = dec (método “C2 humano”)
Diferencia: - 8 9
Cálculo Complemento a 2 Sustraendo (8 bits)
"Carry"
Pasaje a Binario del Sustraendo:
NOT(112) =
112dec a bin=
+
C2(112) = (método
“C2 digital”)
hexa:
comparar! = x16 + =

Suma Minuendo + C2(Sustraendo):


"Carry"

+
binario:

comparar! hexa:
decimal (verif.): = x16 + = = 2^8 - =

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Ejercicio Adicional 3
Repita los ejercicios 1a, 1b, 2a y 2b, pero realizando las restas “a 16 bits”, lo que implica
calcular el complemento a 2 a 16 bits:
Restando 216 en “C2 método humano” y
Completando ceros a izquierda hasta llegar a 16 bits en la NOT del “método digital”.

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Ing. Martín Vernengo, 2021.

Variables “sin signo” en general mvernengo@gmail.com

Antes de que aprendiéramos cómo representar números negativos en una computadora


digital con el “complemento a 2”, asumíamos que todos los números eran positivos:
Esa es de hecho una de las posibilidades en los programas de computación;
La ventaja es que es mayor el rango de números representables, la desventaja es que NO se
pueden realizar restas, sólo sumas.

0
1
2
3
4
5
6
= 1000-1
7

7 = 8-1

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Ing. Martín Vernengo, 2021.

Variables “sin signo” de 1 byte mvernengo@gmail.com

&
F:
0 0000 0000 ;
1 0000 0001 ;
2 0000 0010 ;
… & F 256 números del 0 al 255;
253 1111 1101 ;
254 1111 1110 ;
255 1111 1111 ;
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Ing. Martín Vernengo, 2021.

Variables de 1 byte “con signo” mvernengo@gmail.com

Pero, si necesitamos realizar restas, entonces nos veremos obligados a “desperdiciar” el


bit más significativo (MSB) para que represente signo + cuando 0 y – cuando 1;
2* 256 números posibles; Con 8 bits, seguimos
teniendo 256 números,
7 6 5 4 3 2 1 0 pero ahora 128 son “no
MSB S negativos” (cero + 127
positivos) y 128 son

-
2) 128 números posibles; negativos;

+ =0 =1
S: S:
0 000 0000 ; Q128 € 128 = 256 – 128 = 128 000 0000 ;
1 000 0001 ; Q125 € 127 = 256 – 127 = 129 000 0001 ;
2 000 0010 ; Q126 € 126 = 256 – 126 = 130 000 0010 ;
… …

125 1111101 ; Q3 € 3 = 256 – 3 = 253 1111101 ;


126 1111110 ; Q2 € 2 = 256 – 2 = 254
4 1111110 ;
127 1111111 ; Q1 € 1 = 256 – 1 = 255 1111111 ;

S S 128 números del -1 al -128;


128 números del 0 al +127;

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Binarios “con signo” y “sin signo”: ejercicio
Complete el rango de números positivos y negativos representables con palabras
definidas con y sin signo para cada cantidad de bits por palabra (se presenta la solución
para 16 bits, debe demostrarse los valores correspondientes):

Bits por
Sin Signo Con Signo
Palabra:
n= De Hasta De Hasta
2
4
8 0 255 -128 127
12
16 0 65535 -32768 32767
20
24
32
48
64

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Ejercicio resuelto con 4 bits
“Sin signo”: tendríamos 2+ 16 números del 0 al 15 posibles;
“Con signo”: 2+ 16 números posibles;

+=0
MSB S
3 2 1 0

7:
2%
-
=1
8 números posibles;

7:
0 000 ; Q8 € 8 = 16 – 8 = 8 000 ;
1 001 ; Q7 € 7 = 16 – 7 = 9 001 ;
2 010 ; Q6 € 6 = 16 – 6 = 10 010 ;
3 011 ; Q5 € 5 = 16 – 5 = 11 011 ;
4 100 ; Q4 € 4 = 16 – 4 = 12 100 ;
5 101 ; Q3 € 3 = 16 – 3 = 13 101 ;
6 110 ; Q2 € 2 = 16 – 2 = 14 110 ;
7 111 ; Q1 € 1 = 16 – 1 = 15 111 ;
7 7 8 números del -1 al -8;
8 números del 0 al +7;
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Ing. Martín Vernengo, 2021.

Cómo implementar sumadores binarios (adelanto) mvernengo@gmail.com

Volvemos a la suma binaria y lo que buscamos aquí es plantear lo que luego


desarrollaremos en la sección de lógica combinacional: qué sería necesario para poder
implementar una suma con un circuito, un hardware de computadora;
En definitiva, qué función debe cumplir el “sumador de una ALU”;
Tomemos por ejemplo la entradas salidas
siguiente suma binaria, Ak Bk Ck S k C k+1
que escribimos de una 0 0 0 0 0
manera un poco diferente Carry IN = \7 \ \ \
0 1 0 1 0
hasta lo realizado hasta 1 0 0 1 0 Sumando A = 7
ahora, haciendo énfasis +

en los “me llevo 1”, los 1 1 0 0 1 Sumando B = H7 H H H


“Carry” generados por la 0 0 1 1 0 Resultado S = X7 X X X
suma de cada dígito: 0 1 1 0 1
1 0 1 0 1 Carry OUT = \4 \7 \ \
1 1 1 1 1
Para poder efectuar la suma
necesitamos contar con un
SUMADOR 4 BITS
“sumador por dígito” que
en la figura abajo está
indicado por “FA” (= “Full
Adder”), que debe cumplir
cada uno con la tabla de
“entradas” y “salidas” que
se indica arriba.

Ya veremos cómo construir un hardware que permita realizar esta “suma bit a bit”, pero remarcamos
aquí el mecanismo de “carry”, que replica lo realizado en una suma realizada manualmente.
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Multiplicación y división por 10 en decimal (repaso)
Todos sabemos que en el sistema decimal, multiplicar/dividir por 10 equivale a
“agregar/quitar un 0 a la derecha”…
…o con más rigor correr la coma una posición a la derecha o la izquierda:
302,05 10 3020,5 4172,0 ” 10 417,2
302,0 10 3020 4170,0 ” 10 417,0
Esta operación se puede justificar en base a una simple cuestión algebraica:
10 ⋯ 10 10 10 10 ⋯ 10

⇒ 10 10 10 ⋯ 10 10 10 10 ⋯ 10 0

10.10_ = 10_

⇒ 10 10 10 … 10 10 10 10 … 10 0 10

Por lo que vemos que hay un desplazamiento a la izquierda/derecha de todos los dígitos
en bloque al multiplicar/dividir por 10:
10 10 10 10 10 10 10 10 10 10
0 …
, % …

0

” ”

0 …
, % + …

0
10 10 10 10 10 10 10 10 10 10
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Multiplicación y división por la base numérica “r”
Para una base numérica r = 2, 8, 16, etc. Cualquiera ocurre exactamente lo mismo que al
multiplicar por r = 10:
⋯ ⋯

⇒ ⋯ ⋯ 0

. _ = _

⇒ … … 0

Por lo que vemos que hay un desplazamiento a la izquierda/derecha de todos los dígitos
en bloque al multiplicar/dividir por 10:

0 …
, % …

0

& &
”& ”&

0 …
, % + …

0

La conclusión es que en el caso de multiplicación y división por la base numérica y en


particular por 2 en el caso binario, la operación es muy simple: desplazamiento de bits.
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Ejemplo: multiplicación y división por 10 y por 2
En este ejemplo vemos que lo que se aprende en la escuela secundaria para
multiplicación y división por 10 (“agregar o quitar un cero” que en realidad es “correr la
coma a la derecha o la izquierda”, respectivamente para multiplicar), se aplica
exactamente igual en binario sólo que para multiplicar y dividir por 2.
Multiplicación:

División:

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Multiplicación binaria
La consecuencia es que la multiplicación binaria es absolutamente análoga de decimal
que aprendemos en la primaria: a medida que vamos multiplicando por cifras de mayor
orden del multiplicador, desplazamos hacia la izquierda el resultado:
Multiplicando:
Multiplicador:

Producto:
Ejercicio – Para las siguientes operaciones planteadas en decimal, convierta los
operandos a binario, multiplique en este último sistema numérico y convierta de nuevo
el resultado a decimal confirmando que el valor es correcto:
18 3 ? ? ? ? ;
18 4 ? ? ? ? ;
27 6 ? ? ? ? ;
36 7 ? ? ? ? ;
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Qué necesitamos para una multiplicación binaria
Evidentemente, para realizar una multiplicación
binaria, dado que para ser realizada
manualmente implica la combinación de sumas
con multiplicaciones por 2, también para ser
realizada automáticamente por la ALU de una
CPU digital, requerirá estas dos funciones:
Por lo tanto, necesitaremos implementar
básicamente dos tipos de bloques:
Los “Full Adders” o
“sumadores bit a bit”
interconectados como ya se
explicó en páginas previas y
con la tabla de entradas y
salidas que permite sumar bit
a bit y generar los “carry”;

Un dispositivo conocido como “Shift Register” o “Registro de Desplazamiento” que nos


permitirá hacer que un número almacenado en un “registro” (que es lo mismo que se decir
“posición de memoria”) tenga sus bits desplazados a la izquierda según se lo desee:
DATOS ENTRADA

DESPLAZAR IZQUIERDA
CARGAR DATOS ENTRADA … %

Ing. Martín Vernengo, 2021. DATOS SALIDA


mvernengo@gmail.com
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Suma en binario con formato de coma fija
El formato de “coma fija” implica que una cantidad justamente fija de posiciones a la
izquierda y a derecha de la coma se asignan para dígitos binarios;
Cuando se indica “cantidad fija” implica que los números binarios almacenados en
memoria externa a la CPU o interna (registros) en determinadas posiciones son siempre
interpretados por la ALU enteros o como fraccionarios de acuerdo a dónde se sitúen:
enteros (5b) fraccionarios (3b)

01101 , 011

Lo anterior implica que en caso de realizarse una operación con números enteros puros,
se “desperdician” los bits a la derecha de la coma al quedar siempre en cero (y viceversa
en caso de realizarse operaciones con números menores que 1);
Las operaciones de suma se realizan sin tener en cuenta la presencia de la coma, es decir
“como si no existiera” y sólo es necesario alinear los sumandos para que las comas
queden “alineadas verticalmente”:
Ejemplo: (101,1)2+ (1,101)2 = ?
"Carry" 1 1 0 0 0
1 0 1, 1 0 0= 22 + 0 + 20 + 2-1 = (5,500)10
+ 0 0 1, 1 0 1= 20 + 2-1 + 0 + 2-3= (1,625)10
1 1 1, 0 0 1= 22 + 21 + 20 + 2-3 = (7,125)10 = (5,5)10 + (1,625)10 OK !!!!

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Resta en binario (suma con C2) en coma fija
Las operaciones de resta vía suma con complemento a 2, al igual que en el caso de la
suma, se realizan sin tener en cuenta la presencia de la coma;
Esto implica que para el cálculo del complemento a 2 se toma al número “como si fuera
entero” y luego de realizada la resta se reincorpora la coma en el resultado manteniendo
la cantidad de posiciones a la derecha de la misma como estaban originalmente.
Ejemplo: (101,1)2 - (1,101)2 = ?
coma eliminada 8 bits
Minuendo: 5, 5 0 0 , ⇒ 44
Sustraendo: - 1, 6 2 5
, ⇒ 7
Diferencia: 3, 8 7 5

Cálculo Complemento a 2 Sustraendo (8 bits) NOT Suma Minuendo + C2(Sustraendo):


"Carry" 0 0 0 0 0 0 0 0 "Carry" 1 1 1 0 0 0 0 0 0
NOT(13) = 1 1 1 1 0 0 1 0 44 dec = 0 0 1 0 1 1 0 0
+ 1
C2(13) = 1 1 1 1 0 0 1 1 + 1 1 1 1 0 0 1 1
binario: 1 0 0 0 1 1 1 1 1
hexa: F 3 Carry descartado (n = 8)
= 15x16 + 3 = 243 = 2 -13
8 porque sería el bit 9
hexa: 1 F
(OK método “C2 humano”)
decimal (verif.): = 1x16 + 15 = 31
coma reingresada con 3 bits a la derecha !!!
,
1 1 1 1 1

Ing. Martín Vernengo, 2021. =21 + 20 + 2-1 + 2-2 + 2-3 = (3,875)10


mvernengo@gmail.com
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Formato “floating point” (coma flotante): necesidad
Hasta aquí vimos cómo se realizan manualmente las operaciones más importantes en la
ALU (Unidad Aritmético Lógica) de una CPU, con excepción de la división, e incluso
pudimos plantear a un nivel general de “diagrama en bloques” qué tipo de circuitos o
hardware se requeriría para realizar dichas operaciones;
Como ya se dijo, el detalle de cómo realizarlo a nivel de bit lo veremos en la sección
de Lógica Combinacional y Secuencial;
Sin embargo, tenemos todavía el problema siguiente: cómo realizar operaciones entre
números que pueden tener un rango de variación mucho más amplio de lo que nos
permite el tamaño de la palabra (cantidad de dígitos).
Ejemplo: tenemos un sistema con palabra de n = 16 bits, lo que como ya vimos nos
permitiría representar números hasta el 65535 ó 32767 según que se utilice un esquema
sin o con signo respectivamente. Imaginemos que nos piden realizar un programa que
lleve la cuenta de la cantidad de unidades vendidas por un producto de una gran
empresa a lo largo de un año como asimismo la facturación obtenida: evidentemente no
nos alcanzarían 16 bits para la cantidad de productos y con respecto a la facturación no
podríamos utilizar sólo números enteros, ya que nos vemos obligados a tomar en cuenta
los centavos.
Solución (?): aumentar el tamaño de la palabra de 16 a 32 bits? Y si no alcanza? La
aumentamos a 48 o 64 bits? No parece razonable. Esto nos exigiría construir ALU’s muy
costosas, por los tamaños de los “Full Adders” y “Shift Register” crecientes.

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
La notación científica decimal - repaso
Para entender cómo funciona el formato floating point primero es conveniente repasar
la utilización de la llamada “notación científica” para expresar números en decimal;
En definitiva, el formato floating point es una forma de escribir números con notación
científica pero OJO, EN BINARIO!!!
Por ende, lo que sigue es un EJEMPLO, y debe quedar bien claro que para pasar un número
binario a formato floating point nunca se debe partir del número decimal expresado en
notación científica (como ya veremos);
Ejemplos de números expresados con y sin notación científica (en decimal):
976 000 9,76 10$ 9,76 E5;
1 2 3 4 5

976 000 000 000 000 9,76 10 + 9,76 E14;


1 2 3 4 5 6 7 8 9 10 11 12 13 14

0,0000976 9,76 10 $ 9,76 E Q 5;


5 4 3 2 1

0,0000000000000976 9,76 10 + 9,76 E Q 14;


14 13 12 11 10 9 8 7 6 5 4 3 2 1

Como vemos, al multiplicar por una potencia positiva de 10, la coma se corre a la
derecha igual cantidad de posiciones que el exponente, mientras que si la potencia es
negativa, la coma se corre lo indicado por el exponente pero hacia izquierda.
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Floating Point = “notación científica binaria”
Utilicemos ahora la misma idea de la notación científica decimal pero con números
binarios ― veamos algunos ejemplos ― primero con exponente positivo:
17 16 1 10001 1,0001 2+
1 2 3 4

68 64 4 1000100 1,0001 2'


1 2 3 4 5 6

La idea es siempre expresar el número en floating point comenzando con “1,”, por ende si el
número del que partimos es mayor que 1, necesariamente habrá que multiplicarlo por una
potencia positiva de 2 para que el 1,…. se haga mayor hasta igualar el número buscado.

Veamos ahora ejemplos con exponente negativo y donde ahora el número inicialmente
presentado es menos que 1:
0,53125 0,5 0,03125 2 2 $
0,10001 1,0001 2
1

0,265625 0,25 0,015625 2 2 '

0,010001 1,0001 2
2 1

0,1328125 0,125 0,0078125 2 % 2 )

0,0010001 1,0001 2 %
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com 3 2 1
Formato Floating Point: caso con exponente (+)
Volvamos ahora a uno de los ejemplos para el caso de exponente positivo de la lámina
anterior y veamos cómo se expresaría una primera versión de formato FP:
17 10001, 1,0001 2+ 1, 0001 10 ;
Nota: En este caso, en la expresión más a la derecha, hemos escrito el número utilizando
exclusivamente dígitos 0 y 1, es decir en “binario puro”, incluyend la potencia 2 y su exponente

En esta primer versión de formato FP, que usa sólo 8 bits y ya veremos que no es la final,
la computadora guarda en memoria por separado dos valores:
El “significante” o “mantisa”, que es primer número de la “notación científica binaria” ya vista;
El exponente, quedando implícito que la base a la que se eleva es el 2 (estamos en binario);

0 1 0 0 0 0 0 1
17 1,0625 2+

Exponente Significante (o mantisa)


0100 4 +
, 0001 2 2 1,0625
“1,” implícito
¿Por qué se omite el 1 más significativo? Para ahorrar espacio de almacenamiento:
La computadora “sabe” que siempre se omite un “1,” al guardar el dato en memoria, así que
cuando realiza cálculos el programa sólo tiene que agregar ese “1,” y no hay problemas;
Pero vemos que en este ejemplo simplificado, donde el formato sólo tiene 8 bits, si NO se
omitiera el “1,” NO habría lugar para almacenar los 5 bits de la mantisa: 1,0001.
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Floating Point con exponente (-): “desplazamiento”
Veamos ahora uno de los ejemplos ya presentados antes pero para exponente negativo:
'
0,265625 0,25 0,015625 2 2 0,010001 1,0001 2
Podríamos expresar el exponente negativo = -2 con complemento a 2, sin embargo, no
es esto lo que se hace en el caso particular de los formatos floating point:
Nota: en principio el método utilizado permitiría realizar comparaciones más rápidas entre dos
números en formato floating point para determinar cuál es mayor que si se usara complemento a 2;

Lo que se hace en formato FP es siempre sumar un número fijo al exponente que se


denomina desplazamiento, de manera que en la eventualidad de que el exponente
calculado sea negativo, genera siempre un número positivo:
Supongamos que DESPLAZAMIENTO = 7, entonces el formato será así:

0,265625
0 1 0 1 0 0 0 1 1,0625 2

Exponente Significante (o mantisa)


Almacenado , 0001 2 2 +
1,0625

7 Exponente Real
“1,” implícito
7 Q2
5 0101
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Reformulamos el caso con exponente (+)
Ahora nos vemos obligados a corregir el caso de exponente positivo presentado inicialmente, pues no
habíamos incluido el desplazamiento = 7 que estamos utilizando por ahora;
De este modo, el formato FP de apenas 8 bits que estamos utilizando como ejemplo simplificado
quedaría así para:
17 10001 1,0001 2+ 1, 0001 10 ;

17 1 0 1 1 0 0 0 1
1,0625 2+

Exponente Significante (o mantisa)


Almacenado , 0001 2 2 +
1,0625

7 Exponente Real
“1,” implícito
7 4
11 1011

Es decir que SIEMPRE se suma el desplazamiento al exponente obtenido (que hemos llamado
“exponente real”) para obtener lo que hemos llamado “exponente almacenado”, ya que es dicho
número el que se guarda en memoria como “formato floating point” (punto flotante).

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Ajustes en el formato floating point (IEEE 754)
En rigor, el formato de punto flotante realmente utilizado en informática tiene algunas
particularidades adicionales;
Fue estandarizado por el “Institute of Electric and Electronics Engineers”, IEEE y se conoce como
“Formato Floating Point IEEE 754”;
Existen dos opciones para el formato IEEE 754:
Un formato de “precisión simple”, que utiliza 32 bits y corresponde a las variables que por
ejemplo en lenguaje “C” se declaran como “float”;
Otro formato de “doble precisión”, que utiliza 64 bits y corresponde a variables que en
lenguaje “C” se declaran como “double”;

Para el caso del formato IEEE 754 de precisión simple, las diferencias con los ejemplos
visto hasta aquí son las siguientes:
Exponente: se utilizan 8 bits (en lugar de los 4 bits de nuestros ejemplos previos);
Desplazamiento = 127 (en lugar de = 7 como en las láminas anteriores);
Mantisa: se utilizan 23 bits (en vez de apenas los 4 bits que ejemplificamos antes):
Signo de 1 bit: esto es algo que no tuvimos en cuenta hasta aquí, e implica utilizar un bit 0
cuando el número floating point es positivo y un bit 1 cuando es negativo;

Respecto del signo vemos que en FP se omite utilizar el complemento a 2 para


representar tanto exponentes negativos como el caso en que todo el número a
representar es menor que cero, básicamente para facilitar comparaciones:
Sin embargo, esto es sólo a efectos de almacenaje en memoria, cuando la computadora realiza
operaciones con números en formato FP , siempre termina utilizando en algún punto el
complemento a 2 cuando debe realizar una resta entre números enteros.

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
IEEE 754 de 32 bits: Ejercicio Resuelto 1
La mejor forma de comprender el formato IEEE 754 es con un ejemplo donde se debe
encontrar el número decimal representado por el siguiente número en formato IEEE 754
de 32 bits, recordando que el desplazamiento en el exponente es D = 127:
Signo Exponente
Significante o Mantisa Almacenada
Almacenado (EA)

# de bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

(7 E 2 0 0 0 0 0)16

Formato IEEE 754 de 32 bits expresado en hexadecimal

dirección RAM dirección RAM


0 3E 0 0 0 1 1 1 1 1 0
1
2
3
20
00
00
= 1
2
3
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Implica 8 bytes de almacenamiento en memoria
(2 dígitos hexa o “nibbles” por cada byte = 8 bits);
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
IEEE 754 de 32 bits: Ejercicio Resuelto 1 (Solución)

Signo Exponente
Significante o Mantisa Almacenada
Almacenado (EA)

# de bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Mantisa Real , 01 0 2 1 2
Exponente Real: V] Q3
1 0 0,25 1,25
Pues: … …{ • lmp|ˆo–onqmt~r)
… …{ 127
∴ … Q 127 …{ ⇒ Número 1,25 2 %

V 0111 1100 7C '


7 16 12 124

Entonces el Exponente Real es:


…{ 124 Q 127 Q3 Este 1, lo mismo que la coma estaba implícito, hay que agregarlo, de
esta manera el formato IEEE 754 permite contar con un bit adicional,
en total 33 bits, a pesar de ocupar 32 bits (4 bytes).
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
IEEE 754 de 32 bits: Ejercicio Resuelto 2
Aquí se plantea el enunciado partiendo de binario pero podría haberse realizado
directamente en hexadecimal, como indicado en azul.

Signo Exponente
Significante o Mantisa Almacenada
Almacenado (EA)

# de bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

1 1 0 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

(C 5 6 9 0 0 0 0)16

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
IEEE 754 de 32 bits: Ejercicio Resuelto 2 (Solución)
Encuentre el número decimal representado por el siguiente número en formato IEEE 754
de 32 bits, siendo que el desplazamiento en el exponente es 127:

Signo Exponente
Significante o Mantisa Almacenada
Almacenado (EA)

# de bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

1 1 0 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Q3728

Exponente Real: V] 11
Mantisa Real Q , 1101001 Potencia Valor
2 0,50000000
+ )
Pues: … …{ • lmp|ˆo–onqmt~r) Q 2 2 0 2 0 0 2 2 0,25000000
2 % 0,12500000
… …{ 127 1 0,5 0,25 0,0625 0,0078125
2 + 0,06250000
∴ … Q 127 …{ 1,8203125 2 $ 0,03125000
2 ' 0,01562500
⇒ Número Q 1,8203125 2 2 ) 0,00781250
V 1000 1010 8A '
8 16 10 138 Q3728 2 * 0,00390625

Entonces el Exponente Real es:


…{ 138 Q 127 11 Este 1, lo mismo que la coma estaba implícito, hay que agregarlo, de
esta manera el formato IEEE 754 permite contar con un bit adicional,
en total 33 bits, a pesar de ocupar 32 bits (4 bytes).
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
IEEE 754 de 32 bits: Ejercicio Resuelto 3
Obtener el formato hexadecimal IEEE 754 de 32 bits del número 4, F 5 .

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
IEEE 754 de 32 bits: Ejercicio Resuelto 3 (Solución)
Primero 4, F 5 ? ,
pasamos de , 4F 5 V
decimal a 2% 2 2 2
binario y resulta 1 1 1 0 , 4F 5
un ejemplo ya
realizado 4 8 4 2 0
anteriormente;
14 Q 8 6

6Q4 2

2Q2 FIN PARTE


% +
ENTERA!!!
2 2 2 2
Q R
0, 1 1 0 1
,F 5 0,5 0,25 0 0,0625
Potencia Valor
2 0,50000000
2 0,25000000
Q 0,5 0,3125
2 % 0,12500000
2 + 0,06250000
Q 0,25 0,0625 2 $ 0,03125000
2 ' 0,01562500
2 ) 0,00781250
Q , 5R 2 * 0,00390625

Ing. Martín Vernengo, 2021. 0,0625 Q 0,0625 FIN PARTE FRACCIONARIA!!!


mvernengo@gmail.com
IEEE 754 de 32 bits: Ejercicio Resuelto 3 (Solución)
Una vez
encontrado el
4, F 5 , ,
número binario
podemos pasar coma a izquierda: 3 se compensa aumentando
a encontrar el se reduce el número !!! con exponente
positivo: +3 !!!
formato floating
point. 7
,

Mantisa Almacenada ER = Exponente Real


(omito “1,” inicial)
… …{ • lmp|ˆo–onqmt~r)
… 3 127 130 = 128 + 2
∴V 82 '
8 16 2 130

Exponente
Signo

Significante o Mantisa Almacenada


Almacenado (EA)

# de bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

(4 1 6 D 0 0 0 0)16
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
IEEE 754 de 32 bits: Ejercicio Resuelto 4
Obtener el formato hexadecimal IEEE 754 de 32 bits del número 7 ,F 5 7 .

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
IEEE 754 de 32 bits: Ejercicio Resuelto 4 (Solución)
Si el número está dado en “notación científica” (que es como un “floating point decimal”)
NO COFUNDIRSE !!! Primero hay que eliminar la notación científica para poder convertir el
número a binario puro:
7
7 ,F 5
coma a izquierda:
se reduce el número !!! 3 se compensa
incrementando
exonente en 3 !!!

, 7 F 5 , 7 F 5

NO confundir esto con


NADA de Floating Point,
sólo estamos quitando
la notación científica !!!

Pero conceptualmente es el mismo


tipo de procedimiento que se usa en
binario para cambiar la mantisa para
que sea del tipo “1,…” y modificando
el exponente para que NO se altere el
número original: aunque acá lo
Ing. Martín Vernengo, 2021. hacemos con base 10 en lugar de 2.
mvernengo@gmail.com
IEEE 754 de 32 bits: Ejercicio Resuelto 4 (Solución)
Luego, lo de siempre: pasamos el decimal a binario:
2 2 2 % 2 + 2 $ 2 ' 2 )

0, 0 0 1 0 0 0 1
, 7 F 5 0 0 0, 125 + 0 0 0 0,0078125 ,

Q 0,5 R 0

Q 0,25 R 0

Q 0,125 0,0078125

Q , 3 5R

Q , 7 5R

Q , 53 5 R
Potencia Valor
2 0,50000000
2 0,25000000 0,0078125 Q 0,0078125 FIN !!!
2 % 0,12500000
2 + 0,06250000
2 $ 0,03125000
2 ' 0,01562500
2 ) 0,00781250
2 * 0,00390625

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
IEEE 754 de 32 bits: Ejercicio Resuelto 4 (Solución)
Una vez 7 , F 5V Q 7
encontrado el
, 7 F 5 , ,
número binario
podemos pasar coma a derecha: 3 se compensa achicando
a encontrar el se aumenta el número !!! con exponente
negativo: -3 !!!
formato floating
point. 7
,

Mantisa Almacenada ER = Exponente Real


(omito “1,” inicial)
… …{ • lmp|ˆo–onqmt~r)
… Q3 127 124 = 64+32+16+8+4
∴V 7€ '
7 16 12 124

Exponente
Signo

Significante o Mantisa Almacenada


Almacenado (EA)

# de bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

(3 E 0 8 0 0 0 0)16
Ing. Martín Vernengo, 2021.
mvernengo@gmail.com
Otros ejemplos de IEEE 754
Verifique como ejercicio que es correcta la representación de los primeros 4 ejemplos
abajo (los últimos dos son una convención establecida en el estándar):

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Ing. Martín Vernengo, 2021.

Operaciones con floating point: planteo mvernengo@gmail.com

Para realizar operaciones con punto flotante, vamos primeramente a realizar un ejemplo
con números decimales en “notación científica” para entender mejor el método;
Supongamos que realizar las operaciones: suma y producto de 1,5 10 y 3,5 10% ;
Para la suma, primero tenemos que modificar uno de los sumandos para que su exponente
coincida con el del otro y luego sumar las mantisas:
1,5 10 3,5 10% 0,15 107 3,5 10% 0,15 3,5 10% 3,65 10%
suma SIN
notación 150 3500 ……………………………………………………………… 3650
científica
1 2 3
Para el producto, por las propiedades de la exponenciación, se multiplican las mantisas y se
suman los exponentes:
1,5 10 3,5 10% 1,5 3,5 10 10% 5,25 10 % 5,25 10$
150 3500 … … … … … … … … … … … … … … … … … … … … … 525000
Veamos otro ejemplo para suma y producto de 3,4 10 y 10,6 10 ; 1 2 3 4 5

Para la suma, nuevamente modificamos el exponente del primer sumando para que sea igual
al del segundo y sumamos las mantisas:
3,4 10 10,6 10 0,0034 10 + 10,6 10 0,0034 10,6 10 10,6034 10
suma SIN
notación 0,34 1060 …………………… ……………………… …………………… 1060,34
científica
Para el producto, se multiplican las mantisas y se suman los exponentes: 1 2

3,4 10 10,6 10 3,4 10,6 10 10 36,04 10 36,04 10


0,34 1060 … … … … … … … … … … … … … … … … … … … … … … … … … 360,4
Operaciones con floating point: suma
Pasamos ahora al caso de la suma binaria con FP (usamos el formato simplificado de 8
bits y desplazamiento = 7 visto inicialmente) y sea sumar 17 8,5 :

17 1,0001 2+; 8,5 1,0001 2% 0,10001 2+ ;


1
1 0 1 1 0 0 0 1 1 0 1 0 0 0 0 1

Exponente Mantisa Exponente Mantisa Incrementamos en 1 el


Almacenado 7 Exp. Real Almacenado 7 Exp. Real exponente, pero para
, 0001 , 0001
7 4 compensar corremos 1
7 3 posición a la izquierda
11 1011 “1,” implícito “1,” implícito la coma;
10 1010

17 8,5

1,0001 2+ 0,10001 2+ 1,00010 0,10001 2+ 1,10011 2+;
0,10001

2 2 2 + 2 $ 2+ 1,59375 2+ 25,5

Ing. Martín Vernengo, 2021.


mvernengo@gmail.com
Ing. Martín Vernengo, 2021.

Operaciones con floating point: producto mvernengo@gmail.com

Por último, el producto de los mismos operandos que sumamos previamente:


Al igual que con la notación científica en decimal, se multiplican las mantisas y se suman los
exponentes, y dichas operaciones de realizan en formato binario de números enteros.
No es necesario
17 1,0001 2+; 8,5 1,0001 2% modificar el
exponente;
1 0 1 1 0 0 0 1 1 0 1 0 0 0 0 1

Exponente Mantisa Exponente Mantisa


Almacenado 7 Exp. Real Almacenado 7 Exp. Real
, 0001 , 0001
7 4 7 3
11 1011 “1,” implícito “1,” implícito
10 1010

17 8,5 1,0001 2+ 1,0001 2% 1,0001 1,0001 2+ 2%



1,00010 0,10001 2+ %
100
4 decimales 1,0001
+ 1,001000001 2) 011
4 decimales 1,0001
1,12890625 128 111
10001
00000 144,5 17 8,5
00000
00000
1 0001
% *
1,00100001 2 2 2 1,12890625
8 decimales
Ing. Martín Vernengo, 2021.

Operaciones con floating point: producto mvernengo@gmail.com

Por último, el producto de los mismos operandos que sumamos previamente:


Al igual que con la notación científica en decimal, se multiplican las mantisas y se suman los
exponentes, y dichas operaciones de realizan en formato binario de números enteros.
No es necesario
17 1,0001 2+; 8,5 1,0001 2% modificar el
exponente;
1 0 1 1 0 0 0 1 1 0 1 0 0 0 0 1

Exponente Mantisa Exponente Mantisa


Almacenado 7 Exp. Real Almacenado 7 Exp. Real
, 0001 , 0001
7 4 7 3
11 1011 “1,” implícito “1,” implícito
10 1010

17 8,5 1,0001 2+ 1,0001 2% 1,0001 1,0001 2+ 2%



1,00010 0,10001 2+ %
100
4 decimales 1,0001
+ 1,001000001 2) 011
4 decimales 1,0001
1,12890625 128 111
10001
00000 144,5 17 8,5
00000
00000
1 0001
% *
1,00100001 2 2 2 1,12890625
8 decimales

También podría gustarte