• No se han encontrado resultados

Tema 1: Sistemas de numeración

N/A
N/A
Protected

Academic year: 2022

Share "Tema 1: Sistemas de numeración"

Copied!
64
0
0

Texto completo

(1)

Tema 1: Sistemas de numeración

Sistemas de numeración. Aditivos, multiplicativos, híbridos, posiciónales. Representaciones decimal, binario, octal y hexadecimal. Cambio de base. Algoritmos de suma, resta,

multiplicación y división. Algoritmo de Booth.

(2)

El hombre ha tenido la necesidad de contar desde los primeros tiempos, sea el número de cabezas de ganado, el de guerreros de una tribu,

utensilios, jarras de líquido, cestos de grano, etc.

Cuando los hombres empezaron a contar usaron los dedos, guijarros, marcas en bastones, nudos en una cuerda y algunas otras formas para ir pasando de un número al siguiente. A medida que la cantidad crece se hace necesario un sistema de representación más práctico.

Sin embargo, lo han hecho de forma diferente, no sólo en lo que a los signos se refiere, sino en los criterios utilizados para contar.

En diferentes partes del mundo y en distintas épocas se llegó a la misma solución, cuando se alcanza un determinado número se hace una marca distinta que los representa a todos ellos. Este número es la base. Se sigue añadiendo unidades hasta que se vuelve a alcanzar por segunda vez el número anterior y se añade otra marca de la segunda clase. Cuando se alcanza un número determinado (que puede ser diferente del anterior constituyendo la base auxiliar) de estas unidades de segundo orden, las decenas en caso de base 10, se añade una de tercer orden y así

sucesivamente.

Sistemas de numeración

(3)

Sistemas de numeración

SISTEMAS DE NUMERACIÓN ADITIVOS.- Este sistema acumula los símbolos de todas las cifras hasta completar el número deseado. Estos tienen símbolos para la unidad, la base y las potencias de la base. El número representado se obtiene sumando los valores de los signos que componen su representación.

Ejemplos de este sistema son el egipcio, el romano, el griego.

SISTEMAS DE NUMERACIÓN MULTIPLICATIVO.- Se caracteriza por tener símbolos para la unidad, la base, sus potencias y todos los números

comprendidos entre la unidad y la base. Son de este tipo el babilónico y el maya.

(4)

Sistemas de numeración

SISTEMAS DE NUMERACIÓN HÍBRIDOS.- Estos sistemas combinan el principio del sistema aditivo con el multiplicativo, pero el orden en la escritura de las cifras es fundamental para evitar confusiones en su interpretación. Un ejemplo de este sistema es el chino.

SISTEMAS DE NUMERACIÓN POSICIONALES.- Se caracteriza por tener símbolos para la unidad, para los comprendidos ente la unidad y la base y muy importante para la ausencia de número (cero). En estos la posición de las cifras indica la potencia de la base que le corresponde. Solamente tres culturas lograron implementar este sistema, la babilónica, la hindú y la maya, estas dos ultimas

lograron innovar una nueva cifra de trabajo, el valor posicional del cero.

(5)

Así, los egipcios contaban de 10 en 10, pero su forma de contar era aditiva, es decir, que iban añadiendo el mismo signo hasta llegar a la unidad superior:

Sistemas de numeración

8 = ¡¡¡¡¡¡¡¡

26 = ∩∩¡¡¡¡¡¡

83 = ∩∩∩∩∩∩∩∩¡¡¡

Sistema de numeración base 10 aditivo

3453

(6)

El primer sistema de numeración griego se desarrolló hacia el 600 A.C.

Era un sistema de base decimal que usaba los símbolos de la figura para representar esas cantidades. Se utilizaban tantas de ellas como fuera necesario según el principio de las numeraciones aditivas.

Sistemas de numeración

Para representar la unidad y los números hasta el 4 se usaban trazos verticales.

Para el 5, 10 y 100 las letras correspondientes a la inicial de la palabra cinco (pente), diez (deka) y mil (khiloi). Por este motivo se llama a este sistema acrofónico.

Los símbolos de 50, 500 y 5000 se obtienen añadiendo el signo de 10, 100 y 1000 al de 5, usando un principio multiplicativo.

sistema ático

(7)

Progresivamente este sistema ático fue reemplazado por el

sistema jónico, que empleaba las 24 letras del alfabeto griego junto con algunos otros símbolos según la tabla siguiente:

Sistemas de numeración

(8)

Sistemas de numeración

De esta forma los números

parecen palabras, ya que están compuestos por letras, y a su vez las palabras tienen un valor numérico, basta sumar las

cifras que corresponden a las letras que las componen.

http://www.anael.org/sueno/numero.htm

241 = σμα = 200 + 40 + 1

Esta circunstancia hizo aparecer una nueva suerte de disciplina mágica que estudiaba la relación entre los números y las

palabras. En algunas sociedades como la judía y la árabe, que utilizaban un sistema similar, el estudio de esta relación ha tenido una gran importancia y ha constituido una disciplina aparte: la kábala, que persigue fines místicos y adivinatorios.

Para representar números del 1000 al 999999 se vuelven a usar las mismas letras de las unidades, decenas y centenas, añadiendo un acento agudo invertido o una coma para distinguirlos.

Por ejemplo, el 2004 se

representa como ͵βδ (2000 + 4).

No se utiliza ningún símbolo para representar el 0.

(9)

En los sistemas numeración híbridos se combina el principio aditivo con el multiplicativo. Si para representar 500 los sistemas aditivos recurren a cinco representaciones de 100, los híbridos utilizan la combinación del 5 y el 100. Pero siguen acumulando estas combinaciones de signos para los números más complejos. Por lo tanto sigue siendo innecesario un símbolo para el 0. Para representar el 703 se usa la combinación del 7 y el 100 seguida del 3.

Sistemas de numeración

La forma clásica de escritura de los números en China se empezó a usar desde el 1500 A.C.(aproximadamente). Es un sistema decimal estricto que usa las unidades y los distintas potencias de 10. Utiliza los ideogramas de la figura

El orden de escritura se hace fundamental, ya que 5 10 7 igual podría representar tanto 57 como 75.

(10)

Tradicionalmente se ha escrito de arriba hacia abajo aunque también se hace de izquierda a derecha como en el ejemplo de la figura.

Sistemas de numeración

No es necesario un símbolo para el cero siempre y cuando se pongan todos los ideogramas, pero aún así a veces se suprimían los correspondientes a las potencias de 10.

Mucho más efectivos que los sistemas anteriores son los posicionales. En ellos la posición de una cifra nos dice si son decenas, centenas ... o en general la potencia de la base correspondiente.

(11)

Para el caso de antigua Mesopotamia, se inventó un sistema de base 10, aditivo hasta el 60 y posicional para números superiores:

Para la unidad se usaba la marca vertical “¡”, se dibujaban tantos como fuera posible hasta llegar a 10, que tenía su propio símbolo “<“. De este se usaban los que fuera necesario completando con las unidades hasta llegar al 60.

Sistemas de numeración

20 = <<

36 = <<<¡¡¡¡¡¡

59 = <<<<<¡¡¡¡¡¡¡¡¡

(12)

A partir de ahí se usaba un sistema posicional en que los grupos de signo iban representando sucesivamente el número de unidades, 60, 60×60, 60×60×60, etc.

Sistemas de numeración

83 = 1×60 + 2×10 + 3 = ¡ <<¡¡¡

755 = 12×60 + 3×10 + 5 = <¡¡ <<<¡¡¡¡¡

116503 = 32×602 + 21×60 + 4×10 + 3 = <<<¡¡ <<¡ <<<<¡¡¡

Sistema de numeración babilónico

(13)

Los mayas hacían algo completamente distinto, aunque contaban bajo el mismo principio aditivo.

Las unidades se representan por puntos de manera que cinco puntos se sustituían por otro signo, una raya, etc.

Sistemas de numeración

Se contaban de 20 en 20, de manera que 20 unidades de un determinado orden se sustituían por una unidad de orden superior que se escribía encima de las anteriores.

Se incluye el cero en el

(14)

Sistemas de numeración

Para escribir un número más grande que veinte se usan los mismos símbolos, pero cambian su valor dependiendo de la

posición en la que se pongan. Los números mayas se escriben de abajo hacia arriba.

En el segundo nivel cada punto vale 20 unidades y cada raya vale 100 unidades. En el tercer nivel cada punto vale 400 unidades.

32 429 5125

En el primer nivel (el que hasta abajo) se escriben las unidades (del 0 al 19), en el segundo se representan grupos de 20 elementos. Por esto se dice que el sistema de numeración maya es vigesimal.

La civilización maya fue una de las primeras en descubrir el cero. Este era necesario para su numeración porque los mayas tenían un sistema posicional, es decir, un sistema de numeración en el que cada símbolo tiene un valor

diferente según la posición que ocupa.

(15)

El sistema de numeración romano es híbrido de base cinco y diez que presenta características aditivas en sus distintas unidades con algunas abreviaturas que limitan la acción aditiva. Los signos básicos son:

• Si a la derecha de una cifra romana de escribe otra igual o menor, el valor de ésta se suma a la anterior.

Ejemplos: VI = 6; XXI = 21; LXVII = 67

• La cifra "I" colocada a la izq. de la "V" o la "X", les resta una unidad;

la "X", precediendo a la "L" o a la "C", les resta diez unidades y la "C", a la izq. de la "D" o la "M", les resta cien unidades.

Ejemplos: IV = 4; IX = 9; XL = 40; XC = 90; CD = 400; CM = 900

• En ningún número se puede poner una misma letra más de tres veces seguidas. En la antigüedad se ve a veces la "I" o la "X" hasta cuatro veces seguidas.

Ejemplos: XIII = 13; XIV = 14; XXXIII = 33; XXXIV = 34

Sistemas de numeración

(16)

El sistema de numeración romano (cont.)

• La "V", la "L" y la "D" no pueden duplicarse porque otras letras ("X", "C", "M") representan su valor duplicado.

Ejemplos: X = 10; C = 100; M = 1.000

• Si entre dos cifras cualesquiera existe otra menor, ésta restará su valor a la siguiente.

Ejemplos: XIX = 19; LIV = 54; CXXIX = 129

• El valor de los números romanos queda

multiplicado por mil tantas veces como rayas horizontales se coloquen encima de los mismos.

Ejemplos: = 1.000.000

Sistemas de numeración

M

Clock in Bad Salzdetfurth, Germany, Badenburger

Strasse Diagrama numérico en In

Somnium Scipionis, de Macrobio, impreso por Theobaldum Paganum en 1560, p. 180

Roman Numbers on Cutty Sark

(17)

Sistemas de numeración

Numeración Indú.

El ingenioso método de expresar cada número posible utilizando un conjunto de diez símbolos (cada uno de ellos con un valor en su posición y un valor

absoluto), surgió en la India.

Se incluye el cero en el sistema de numeración.

La idea parece hoy en día tan simple que su significado y profundidad no son apreciados en su justa medida.

(18)

La numeración indo-arábiga que se usa en la actualidad tiene algunas de las características mencionadas, pero presenta otras nuevas:

• no es aditiva: hay un signo diferente para las primeras 10 cifras, entre las cuales se incluye el cero

• cuenta en base 10, es decir, que cada 10 unidades de un mismo orden equivalen a una unidad del orden superior, y viceversa

• es posicional, por cuanto una cifra como 3 tiene un valor en si misma (representa 3 unidades) y otro en relación a la posición que ocupa (no es lo mismo 3, que 30 o 300). La presencia del cero garantiza una completa claridad al orden.

Sistemas de numeración

manuscrito español, fechado en 976 DC., donde aparecen las nuevas cifras

numéricas indo-arábigas

(19)

Representación en base 2 (binario)

3 10 2

2 1

0 . 625

8 1 2

2 1 1 2

0 2

1 101

.

0 = ⋅

+ ⋅

+ ⋅

= + =

10

2 1

0 1

2 3

2 4

25 . 4 27

1 1 2 8 16

2 1 2

0 2

1 2

1 2

0 2

1 2

1 01

. 11011

= +

+ + +

=

⋅ +

⋅ +

⋅ +

⋅ +

⋅ +

⋅ +

=

En general

m m n n

n n

m n

n

a a

a a

a a

a

a a

a a a a

a x

⋅ +

+

⋅ +

⋅ +

⋅ +

⋅ + +

⋅ +

=

=

2 2

2 2

2 2

2

) .

(

2 2 1 1

0 0 1 1

1 1

2 2

1 0 1 1

Representación en base 10

101 .

100 0 1 10

10 1 1 10

0 10

1 101

.

0

10

= ⋅

1

+ ⋅

2

+ ⋅

3

= + =

Sistemas numéricos. Cambios de base.

(20)

Representación en base 2. Parte entera.

0 2 1

1 1

0 0 1 1

1 1 2

0 1 1

) 2

2 (

2

2 2

2 2

) (

a a

a a

a a

a a

a a a

a x

n n n n

n n n n

n n

+ +

+

⋅ +

=

⋅ +

⋅ + +

⋅ +

=

=

0 0

2 1 1 1

1

0 1

2 2

2

a r

a a

a x

r x

x

n n

n

n

+ ⋅ + + =

=

+

=

y

con

Luego a0 es el resto de dividir x entre 2.

Para hallar el siguiente dígito a1, aplicamos el mismo procedimiento a x1

1 1

3 2 2 1

2

1 2

2 1 1 1

1

2 2

2 2

2

a r

a a

a x

r x

a a

a x

n n n n

n n n n

= +

+

⋅ +

=

+

= +

+

⋅ +

=

y con

Sistemas numéricos. Cambios de base.

(21)

Ejemplo1:

1 1

12 2

25 ⇒ = ⋅ + ⇒

0

=

= x a

x

0 0

6 2

12

1 1

1

= ⇒ x = ⋅ + ⇒ a =

x

0 0

3 2

6

2 2

2

= ⇒ x = ⋅ + ⇒ a =

x

1 1

1 2

3

3 3

3

= ⇒ x = ⋅ + ⇒ a =

x

1 1

0 2

1

4 4

4

= ⇒ x = ⋅ + ⇒ a =

x finaliza

5

= 0 x

por lo tanto (25)10 = (11001)2 Representación en base 2. Parte entera.

Sistemas numéricos. Cambios de base.

25 2

1 12 2

0 6 2

0 3 2

1 1 2 1 0

Los dígitos se van obteniendo desde el menos (a0) significativo hasta el más significativo (an), por lo tanto debemos escribir la representación del número x en base 2 tomando los restos sucesivos en el orden indicado por la flecha de la gráfica.

(22)

1 625

. 1 2

8125 .

0 ⇒ = ⇒

1

=

= x a

x

Ejemplo2:

1 25

. 1 2

625 .

0

1 2

1

= ⇒ x = ⇒ a

=

x

0 50

. 0 2

25 .

0

2 3

2

= ⇒ x = ⇒ a

=

x

1 0

. 1 2

50 .

0

2 4

3

= ⇒ x = ⇒ a

=

x finaliza

0

.

4

= 0 x

por lo tanto (0.8125)10 = (0.1101)2

) 2

2 2 (

1

2 2

2 )

(.

1 2 1

1

2 2 1 1

2 2

1

+

⋅ +

+

⋅ +

⋅ +

+

⋅ +

=

=

m m

m m m

a a

a

a a

a a

a a x

luego

2 x = a

1

+ a

2

⋅ 2

1

+  + a

m

⋅ 2

m+1

así, a-1 es la parte entera de 2x, y repetimos el mismo proceso para calcular el siguiente dígito

Representación en base 2. Parte decimal.

Sistemas numéricos. Cambios de base.

tomando los dígitos en el orden indicado por la

(23)

Ejemplo: ´Para el número 42,375 se procede como sigue.

Sistemas numéricos. Cambios de base.

MSB: Most Significant Bit – mas significativo LSB: Least Significant Bit – menos significativo

(24)

Representación en base 8 (octal)

decimal 0 1 2 3 4 5 6 7

binario 000 001 010 011 100 101 110 111

octal 0 1 2 3 4 5 6 7

así, el número se divide en bloques de 3 dígitos (la parte entera de derecha a izquierda y la parte decimal de izquierda a derecha) desde el punto decimal

Sistemas numéricos. Cambios de base.

8 2

10

( 101 | 101 | 001 . 110 | 010 | 100 ) ( 551 . 624 ) )

7890625 .

361

( = =

8 2

10

( 011 | 001 . 110 | 100 ) ( 31 . 64 ) )

8135 .

25

( = =

(25)

Justificación del cálculo

+

⋅ +

+ +

⋅ +

+

=

+

⋅ +

+ +

⋅ +

+

=

+

⋅ +

⋅ +

⋅ +

⋅ +

⋅ +

=

=

6 2 5

1 4 3

2 1

6 6 5

3 4 3

2 1

6 6 5 5

4 4 3 3

2 2 1 1

2 6

5 4 3 2 1

8 ) 2

4 ( 8

) 2

4 (

2 ) 2

4 ( 2

) 2

4 (

2 2

2 2

2 2

) (.

b b

b b

b b

b b

b b

b b

b b

b b

b b

b b b b b b x

notar que los b-i, i=1,2,3,…, son los números 0 ó 1, y la operación entre paréntesis produce dígitos entre 0 y 7

8 2

2

( 101 | 101 | 001 . 110 | 010 | 100 ) ( 551 . 624 ) )

1100101 .

101101001

( = =

Representación en base 8 (cont.)

Sistemas numéricos. Cambios de base.

(26)

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

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

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

El número binario se divide en bloques de 4 dígitos (la parte entera de derecha a izquierda y la parte decimal de izquierda a derecha) desde el punto decimal

16 2

10

( 0001 | 0110 | 1001 . 1100 | 1010 ) ( 169 . ) )

7891 .

361

( = = CA

En muchas ocasiones, los usuarios de computadora avanzados, tal como los

programadores de Assembler o lenguaje Ensamblador, requieren conocer directamente el contenido binario de una o más palabras del computador. Dado lo largo de la secuencia de 32 bits o de 64 bits, es muy común que los sistemas operativos muestren el contenido binario de las palabras de computadora en base 16 en lugar de mostrarlo en base 2.

1 6 9 C A

Representación en base 16 (hexadecimal).

Sistemas numéricos. Cambios de base.

(27)

Justificación del cálculo

+

⋅ +

+ +

+

⋅ +

+ +

=

+

⋅ +

+ +

+

⋅ +

+ +

=

+

⋅ +

⋅ +

⋅ +

⋅ +

⋅ +

⋅ +

⋅ +

=

=

8 2 7

6 1 5

4 3

2 1

8 8 7

6 4 5

4 3

2 1

8 8 7 7

6 6 5 5

4 4 3 3

2 2 1 1

2 8

7 6 5 4 3 2 1

16 ) 2

4 8

( 16

) 2

4 8

(

2 ) 2

4 8

( 2

) 2

4 8

(

2 2

2 2

2 2

2 2

) (.

b b

b b

b b

b b

b b

b b

b b

b b

b b

b b

b b

b b

b b b b b b b b x

notar que los b-i, i=1,2,3,…, son los números 0 ó 1, y la operación entre paréntesis produce dígitos entre 0 y 15, los cuales corresponden con los símbolos entre 0 y 9 ó A y F.

16 2

2

( 0001 | 0110 | 1001 . 1100 | 1010 ) ( 169 . ) )

110010 .

101101001

( = = CA

Sistemas numéricos. Cambios de base.

Representación en base 16 (hexadecimal).

(28)

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

notar que los ai, i=0,1,…,n, son los números 0, 1, …, F Representación en base 16 (hexadecimal).

0 0 1 1

1 1 16

0 1

1

) 16 16 16 16

( = ⋅ + ⋅ + + ⋅ + ⋅

= a a

a a a a

a a

x

n n

n n n n

634668 12

32 3840

40960 589824

12 16

2 256 15

4096 10

65536 9

16 12

16 2

16 15

16 10

16 9

) 2 9

(

16 4 3 2 1 0

= +

+ +

+

=

+

⋅ +

⋅ +

⋅ +

=

⋅ +

⋅ +

⋅ +

⋅ +

C =

AF

Sistemas numéricos. Cambios de base.

(29)

Sea β la base usada en el computador, β = 2,8,16. El sistema más apropiado para representar números en un computador electrónico es el binario (base 2).

Sea x un número real, con x distinto de cero y normalizado

β

β

σ ( 0 . d

0

d

1

d

2

d

t

)

β (e)

x = 

donde

σ representa el signo de

)

β

(. d

0

d

1

d

2

d

t la mantisa en base el exponente en base

Ejemplo de normalización de un número en base 2:

5 posiciones

)2

101 2 (

2

( 1 . 100011101 ) 2 )

1101 .

110001

( =

x =

Sea el número x = (49.8125)10

x

d

i es un número entero entre 1 y

β − 1 )

β

(e β

β

5 en base 2

Representación en base β

Sistemas numéricos. Cambios de base.

La normalización se lleva a cabo

(30)

El estándar IEEE 754 para la representación de números de punto flotante en precisión simple supone el uso de palabras de 32 bits.

Así, un número x puede ser representado usando:

• 1 bit para el signo

• 8 bits para el exponente (la característica)

• 23 bits para la parte fraccionaria (la mantisa)

El bit b1 representa el signo del número, valiendo 0 si el número es positivo y 1 si el número es negativo.

Sistemas numéricos. Cambios de base.

(31)

Sistemas numéricos. Cambios de base.

A fin de obtener un rango de exponentes positivos y negativos alrededor de cero, se resta 127 del exponente e, de manera que el intervalo para el

exponente almacenado es en realidad [-127, 128]. El 127 es justamente el sesgo mencionado.

Si no se considera este sesgo, sino que se utiliza el primer bit del exponente para el signo y el resto de los bits para los dígitos del exponente como tal,

tendríamos una doble representación para el cero, inutilizando así un valor para

1 1 1 1 1 1 1 1

255 1

2 4 8 16 32

64 128

2 1 2 1 2

1 2

1

7 6 1 0

= + + + + +

+ +

=

⋅ +

⋅ + +

⋅ +

= 

Los siguientes 8 bits comprendidos entre el b2 y el b9 almacenan el exponente e.

El valor e de la representación no se almacena directamente, lo que se almacena es el resultado de sumarle a e un valor fijo llamado sesgo.

Los 8 dígitos para el exponente en base 2, representan un intervalo que va del 0 al 28-1 = 255

(32)

Sistemas numéricos. Cambios de base.

En base 2, se tiene que la parte entera de la mantisa, esto es d0, siempre será igual a 1. Por lo tanto no es necesario almacenar ese valor.

Los dígitos de la mantisa que sí se almacenan son d1, d2, …, dt, es decir los dígitos de la parte fraccionaria de la mantisa.

Si t = 23, es claro que se deben almacenar 23 dígitos, que es justamente la cantidad de bits reservados para la mantisa en el estándar.

Luego, los dígitos d1, d2, …, dt se almacenan en los bits b10, b11, …, b32 respectivamente.

(33)

Sistemas numéricos. Cambios de base.

)2

101 2

2

(

) 100011101 .

1 (

x =

se representa como

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

signo exponente mantisa

Retomando el ejemplo x = 49.8125

)2

101 2 (

2

( 1 . 100011101 ) 2 )

1101 .

110001

( =

x =

El número normalizado

1 bit 8 bits 23 bits

el exponente = (5 + 127 (sesgo))2 :

E = 5 + 127 = 132 = ( 10000100 )

2

0

el signo s se representa como 0 si es positivo y 1 si es negativo, en este caso s=0 la parte fraccionaria de la mantisa es (100011101)2 de donde m = (0.100011101)2

El uso de este sistema proporciona un número en punto flotante de la forma

) 1

( 2

) 1

( −

s E127

+ m

5 en base 2

01000010010001110100000000000000

(34)

Sistemas numéricos. Cambios de base.

El número de máquina menor que le sigue al número

es el número

y el siguiente número de máquina mayor es

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

0

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

0

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

0

Esto significa que nuestro número de máquina original representa no sólo a 49.8125 sino también a los números reales que están en el intervalo entre corchetes (línea azul).

= 49. 81249618530273

= 49. 81250381469727

49. 81249618530273 [ 49.8125 ] 49. 81250381469727

= 49. 8125

01000010010001110100000000000000

01000010010001110011111111111111

01000010010001110100000000000001

(35)

Sistemas numéricos. Cambios de base.

Ejemplo: Representación punto flotante de algunos números en base decimal

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

0

El conjunto de números de máquina posee un conjunto de características importantes, a saber:

• Es un conjunto finito y discreto.

• Es simétrico respecto al cero (existe la misma cantidad de números de máquina negativos y positivos).

• Los números de máquina se aglomeran a medida que se acercan al cero.

= 1.0

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

0 = 2.0

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

1 = -6.5

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 = +0

(36)

Sistemas numéricos. Cambios de base.

El estándar IEEE 754 para la representación de los números de punto flotante en precisión doble supone el uso de palabras de 64 bits y se basa en la

notación científica normalizada.

Esquematicemos la palabra de 64 bits como se muestra a continuación

El bit b1 representa el signo del número, valiendo 0 si el número es positivo y valiendo 1 si el número es negativo; los siguientes 11 bits comprendidos entre b2 y b12 almacenan el exponente y, finalmente, los últimos 52 bits de la palabra sirven para almacenar la mantisa.

Dado que se está considerando números normalizados en base 2, se tiene que la parte entera de la mantisa, esto es d0, siempre será igual a 1.

El sesgo a ser usado para el exponente es 1023.

(37)

Algoritmos de suma y resta.

Sistemas numéricos.

En base decimal (10) la suma es una operación por la que se unen o combinan 2 cantidades:

• sumar cantidades del mismo orden, empezando por los inferiores

• si la suma de esas cantidades da lugar a una unidad de orden superior, ésta pasa a registrarse entre las unidades de orden inmediatamente superior

Pues bien, la suma de números en otras bases diferente a la 10, siguen las mismas pautas, con la salvedad de que el paso de una unidad a la siguiente se realiza conforme a la base de numeración.

(38)

Algoritmos de suma y resta.

Sistemas numéricos.

Ejemplo en base 5

) 5 (

) 5 (

) 5 (

4 1 3 4

1 4 3 1

3 2 4 2

1

1 Base 5:

0 – 1 – 2 – 3 – 4

10 – 11 – 12 – 13 – 14 20 – 21 – 22 – 23 – 24

… +

Ejemplo en base 2 Base 2:

0 – 1 – 10 – 11 – 100 101 – 110 – 111 – 1000

(39)

Algoritmos de suma y resta.

Sistemas numéricos.

Algoritmo 1:

El procedimiento consiste en operar entre si unidades del mismo orden.

Cuando sea posible realizar la resta (la cifra del minuendo es mayor o igual que la del sustraendo) se hará así, pero en caso contrario, se tomará “prestada” una unidad del orden superior transformándose en las unidades del orden inmediato inferior que corresponden a la base.

La resta es una operación más compleja!

) 5 (

) 5 (

) 5 (

3 1 3

1

3 2 2

1

1 4 0

3

1 5 3 0 5

2 + + Base 5:

0 – 1 – 2 – 3 – 4

10 – 11 – 12 – 13 – 14 20 – 21 – 22 – 23 – 24

… Ejemplo en base 5

=11(5)

=10(5)

(40)

Algoritmos de suma y resta.

Sistemas numéricos.

Algoritmo 2:

Consiste en plantear la operación del mismo modo que el en el algoritmo 1, pero actuar de modo diferente cuando no se puede realizar la resta correspondiente entre las unidades de que se trate. En este caso se añaden 10 unidades

auxiliares a la cifra del minuendo, se realiza la resta entre estas unidades y luego se “lleva una” añadiéndose a la cifra del sustraendo en la unidad

inmediata superior.

) 10 (

) 10 (

) 10 (

7 4 1

8 7 1

5 2 3

8 2

15 12

Ejemplo en base 10

Esta acción auxiliar está basado en la propiedad:

“Si al minuendo y al

sustraendo de una resta le sumamos o restamos la

misma cantidad, el resultado de la resta no varia”

Base 5:

0 – 1 – 2 – 3 – 4

10 – 11 – 12 – 13 – 14

) 5 (

) 5 (

) 5 (

3 0 2

4 2 2

2 3 4

3

2 5 +

Ejemplo en base 5

=12(5)

(41)

Algoritmos de suma y resta.

Sistemas numéricos.

Se ejemplificara para el caso de una representación de 4 bits:

1 bit para el signo y los otros 3 bits para la magnitud.

Así, el -3 se representa por y el 6 se representa por

En el caso de la representación binaria de números enteros positivos, la

implementación de estos algoritmos pueden resultar bastante complicado y el tiempo que tomaría realizar la sustracción podría variar enormemente.

La idea es realizar la sustracción de A-B como A+(-B). De esta manera podemos usar el algoritmo de adición para realizar la sustracción. Pero el

problema que se presenta es como representar números enteros negativos en base 2.

(42)

Algoritmos de suma y resta.

Sistemas numéricos.

En esta representación de 4 bits, los número más negativo y más positivo que se pueden representar son el -7 y el 7 respectivamente:

 Se tendría duplicidad para la representación en base 2 del cero!

 Se quiere que podamos usar el algoritmo de adición para realizar la sustracción!

Si llevamos a cabo la adición de 5 y -2, es decir la adición de (0101)2 y (1010)2 da como resultado (1111)2 que

corresponde a número con signo 1 (negativo) y magnitud 7, siendo el resultado real en número 3!

1 1 1 1

0 1 0 1

1 0 1 0

+

(43)

Algoritmos de suma y resta.

Sistemas numéricos.

Se plantea el problema de otra forma:

Para la respuesta hay que recordar que estamos

limitados a 4 bits. El 1 del bit 5 se ignora.

Finalmente se puede representar los números negativos del -8 al -1:

primer bit es 1 primer bit es 0

0 0 0 0 1

1 0 0 0

1 1 1 1

+

(44)

Algoritmos de suma y resta.

Sistemas numéricos.

Ejemplos:

Obs. Concepto de overflow:

Si la suma de 2 números positivos

produce un número negativo o la suma de 2 números negativos produce un número positivo, el resultado de la suma da un overflow.

(45)

Sistemas numéricos.

Ejemplos:

overflow overflow

overflow

(46)

Algoritmos de multiplicación.

Sistemas numéricos.

La multiplicación suele definirse como suma reiterada.

Ejemplo: 27(10) × 13(10), es repetir 27 un total de 13 veces 27 1 vez

54 2 veces 108 4 veces 216 8 veces

216+108+27 = 351 8+4+1 = 13 veces

Obs. Cuando las cantidades son muy grandes se hace muy engorroso, y es necesario utilizar las propiedades de la multiplicación

• Distributiva: 8 × 342 = 8 × 300 + 8 × 40 + 8 × 2

• Asociativa: 8 × 300 = 8 × (3 × 100) = (8 × 3) × 100

Obs. Una de las dificultades mayores en la multiplicación, cuando se aplican estas propiedades, consiste en agrupar las unidades del mismo orden dentro de los resultados parciales.

(47)

Algoritmos de multiplicación.

Sistemas numéricos.

Algoritmos de celosía:

3 2 6

3

8 1

2 3 8 8

1 8

4 8 0 6

0 9

1 6 2 4

Resultado: (12388)10

La disposición de las diagonales

permite diferenciar, dentro de cada casilla, el orden de unidad de cada cifra y , de manera oblicua, alinear las unidades del

mismo orden.

326(10) × 38(10)

2 4 3

3

2 1

4 4 3 1

1 4

1 1 2 2

1 1

1 3 0 4

Resultado: (14431)5 243(5) × 32(5)

Base 5:

0 – 1 – 2 – 3 – 4

10 – 11 – 12 – 13 – 14

(48)

Algoritmos de multiplicación.

Sistemas numéricos.

Se cambia la disposición de los números (uno bajo el otro) y de los resultados parciales

(alineando en vertical unidades del mismo orden, en vez de forma oblicua).

Ello obliga, a aplicar la propiedad distributiva de un modo más

sistemático empezando por las unidades del multiplicador,

seguido por sus decenas, etc.

Lo visto hasta el momento permite interpretar mejor el algoritmo comúnmente usado en base 10, este es muy parecido al aquí expuesto.

5 7 6 8 6 0

8 0

0 4 1 5 1

0 2

5 3

5 2

7 4 3

×

caso: 5 unidades

caso: 2 decenas 347×5

347×20

Se añade un cero:

347×20=(347×2)×10

(49)

Algoritmos de multiplicación.

Sistemas numéricos.

Veamos un caso en otra base, por ejemplo base 5

1 3 4 4 1

1 1

2 2

0 4 1 4 0

3 1

1 1

2 3

3 4 2

×

243×2

243×3

Se añade un cero:

243×30=(243×3)×10 Base 5: 0 – 1 – 2 – 3 – 4

10 – 11 – 12 – 13 – 14 20 – 21 – 22 – 23 – 24

(50)

Algoritmos de división.

Sistemas numéricos.

La división responde básicamente a la acción de repartir / dividir la cantidad llamada dividendo D en un número de grupos del tamaño indicado por el divisor d.

Ese número de grupos es el cociente c y pudiendo quedar un resto r.

r c d

D = × +

Procedimiento sustractivo:

ejemplo base 10

38 / 5 → encontrar 7 tal que 5 × 7 = 35, así 38 = 5 × 7 + 3

(51)

Algoritmos de división.

Sistemas numéricos.

Procedimiento distributivo:

ejemplo base 10

659 / 7 = (650 / 7) + (9 / 7) = (65 / 7) × 10 + (9 / 7) pero 65 = 9 × 7 + 2 y 9 = 1 × 7 + 2 659 / 7 = (9 × 7 / 7+ 2 / 7) × 10 + (1 × 7 / 7 + 2 / 7)

= (9 + 2 / 7) × 10 + (1 + 2 / 7)

= 9 × 10 + (20 / 7) + 1 + 2 / 7

= 9 × 10 + (2 × 7 / 7 + 6 / 7) + 1 + 2 / 7

= 9 × 10 + 2 + 6 / 7 + 1 + 2 / 7

= 9 × 10 + 3 + (8 / 7)

= 9 × 10 + 3 + (1 × 7 / 7 + 1 / 7)

= 9 × 10 + 3 + 1 + 1 / 7

= 9 × 10 + 4 + 1 / 7 de donde

659 = (9 × 10 + 4) × 7 + 1 = 94 × 7 + 1

20 = 2 × 7 + 6

8 = 1 × 7 + 1

(52)

Algoritmos de división.

Sistemas numéricos.

Ejemplo en base 5: 343(5) / 4(5)

Usando la tabla de multiplicar del 4 Base 5:

0 – 1 – 2 – 3 – 4

10 – 11 – 12 – 13 – 14 20 – 21 – 22 – 23 – 24 30 – 31 – 32 – 33 – 34

4 × 1 = 4 4 × 2 = 13 4 × 3 = 22 4 × 4 = 31

2 1 3

3 3

4 4

1 3

4 3

4

3

(5) (5)

Así se tiene que 343(5) = 44(5) × 4(5) + 2(5)

(53)

Algoritmos de división.

Sistemas numéricos.

Base 2:

0 – 1 – 10 – 11 – 100 101 – 110 – 111 – 1000

(54)

Sistemas numéricos.

El dos complemento de un número N que, expresado en el sistema binario compuesto por n bits, se define como CN2 = 2n – N.

Ejemplo:

• N = 45, expresado en binario de seis bits es N = 1011012. El dos complemento de N será:

N = 45, n = 6, 26 = 64, y por lo tanto CN2 = 64 – 45 = 0100112.

• N = 19, expresado en binario de 8 bits es N = 00010011 y CN2 = 11101101 El uno complemento de un número N que, expresado en el sistema binario

compuesto por n bits, corresponde a convierte cada bit 1 en un bit 0 y viceversa sobre la representación binaria del número.

Ejemplo:

N = 45, expresado en binario de seis bits es N = 1011012. El uno complemento de N será: CN1 = 0100102.

Obs. Es muy fácil obtener el dos complemento de un número a partir de uno complemento, porque el dos complemento de un número binario es una unidad mayor que su uno complemento, es decir, CN2 = CN1 + 1.

(55)

Sistemas numéricos.

Aplicabilidad del dos complemento: La utilidad principal se encuentra en las operaciones matemáticas con números binarios. En particular, la resta de números binarios se facilita enormemente utilizando el dos complemento: la resta de dos números binarios puede obtenerse sumando al minuendo el dos complemento del sustraendo. Se utiliza porque la unidad aritmético-lógica no resta números binarios, suma binarios negativos, por eso esta conversión al negativo.

bit de signo

bit de signo

número binario en dos complemento número binario

(56)

Algoritmo de Booth

Sistemas numéricos.

Supongamos dos números, multiplicando y multiplicador, con longitudes en bits, x para el primero, e y para el segundo:

• Construimos una matriz de tres filas y x+y+1 columnas. Identificaremos las filas como, A la primera, S la segunda y P la tercera.

• Se inician los x primeros bits de cada fila con:

A, el multiplicando. S, el dos complemento del multiplicando. P, ceros.

• Los siguientes y bits se completan con:

A, ceros. S, ceros. P, el multiplicador.

• Para finalizar la matriz, se inician a 0 todos los valores de la última columna.

Una vez iniciada esta matriz, se realiza el algoritmo siguiente:

• Se realizan y iteraciones del siguiente bucle.

1. Comparar los dos bits menos significativos de P, para realizar la siguiente acción:

00 o 11 : no se hace nada.

01 : P = P + A. Se ignora el desbordamiento (overflow).

10 : P = P + S. Se ignora el desbordamiento.

2. Desplazamiento aritmético de P a la derecha (se conserva el bit de signo).

• Finalmente, tras y iteraciones, se elimina (mediante un desplazamiento) el último bit de la derecha (menos significativo) de P, obteniendo el resultado.

(57)

Algoritmo de Booth

Sistemas numéricos.

2 10

2

10

( 110 ) ( 2 ) ( 10 ) )

6

( = y =

0 0010 0000

:

0 0000 1010

:

0 0000 0110

:

P S

A

1C de A :

2C de A :

1010 0000 0 1 1111 1001

4 iteraciones

0 1100 0000

0 1000 0001

1 0000 0011

1 0000 1101

0 0001 1010

0 0001 0000

0 0010

0000

P = P + S

P = P + A

×

( 12 )

10

= ( 1100 )

2

base 2:

0 – 1 – 10 – 11 – 100 101 – 110 – 111 – 1000 1001 – 1010 – 1011 – 1100

el multiplicando

el multiplicando en 2C el multiplicador

bit extra

(58)

Operadores para manejo de bits en ANSI C

Operadores de corrimiento/desplazamiento a la izquierda («) y a la derecha (»):

Estos desplazan los bits del operando de la izquierda el número de posiciones indicadas por el operando de la derecha. Los desplazamientos ocurren en la dirección indicada por el propio operador. 0 bits entran a las posiciones de orden más bajo y más alto. Los bits desplazados más allá de la posición de orden más bajo y alto bajo se pierden.

Ejemplo: para una representación de 16 bits, para las declaraciones

unsigned int z = 5;

z es 00000000 00000101, y

z << 1; es 00000000 00001010 ó 10 decimal z << 10; es 00010100 00000000 ó 5120 decimal

unsigned int z = 40960;

z es 10100000 00000000, y

z >> 1; es 01010000 00000000 ó 20480 decimal z >> 8; es 00000000 10100000 160 decimal

Sistemas numéricos.

(59)

Obs.

• El operador de corrimiento/desplazamiento a la izquierda en 1 aplicado a un valor entero positivo z, tiene el efecto de multiplicar el valor por 2, a menos que ocurra un ‘overflow’ debido a la caída de un 1 a una posición más allá del bit de orden más alto.

Ejemplo:

unsigned int z = 7;

z es 00000000 00000111, y

z << 1; es 00000000 00001110 ó 14 decimal

• De manera similar, el operador de corrimiento/desplazamiento a la derecha en 1 aplicado a un valor entero positivo z, tiene el efecto de dividir el valor por 2.

Ejemplo:

unsigned int z = 16;

z es 00000000 00010000, y

z >> 1; es 00000000 00001000 u 8 decimal

Operadores para manejo de bits en ANSI C

Sistemas numéricos.

(60)

Operadores lógicos: o inclusivo (|) , y (&), o exclusivo (^)

Cuando éstos se aplican a dos operando enteros positivos, las representaciones binarias de los valores convertidos son comparadas bit a bit.

• El operador lógico & da como resultado 1 si los bits de los dos operando son ambos iguales a 1, de otra forma el resultado es 0.

• El operador lógico | da como resultado 0 si los bits de los dos operando son ambos iguales a 0, de otra forma es resultado es 1.

• El operador lógico ^ da como resultado 1 si los bits de los dos operando son diferentes, de otra forma es resultado es 0.

Ejemplo: para una representación de 8 bits, se tiene

unsigned int z1 = 10, z2 = 7;

de donde z1 es 0000 1010 z2 es 0000 0111

z1 & z2; es 2 cuya presentación es 0000 0010 z1 | z2; es 15 cuya presentación es 0000 1111 z1 ^ z2; es 13 cuya representación es 0000 1101

Operadores para manejo de bits en ANSI C

Sistemas numéricos.

(61)

Operador uno complemento (~)

Este operador unario aplicado a un número entero positivo convierte cada bit 1 en un bit 0 y viceversa sobre la representación binaria del número.

Ejemplo: para una representación de 8 bits, se tiene

unsigned int z1 = 13;

de donde z1 es 0000 1101

~z1; es 242 cuya presentación es 1111 0010

Obs. El operador uno complemento no debe ser confundido con los operadores unario diferencia (-) y negación (!).

Así, para z declarada como entero y asignándole 0, se tiene –z es 0, !z es 1 y

~z tendrá representación 1111 1111 (representación de 8 bits).

Obs. El operador uno complemento permite escribir códigos portables (independientes de la representación de la máquina), por ejemplo

z &= ~255; (z = z & ~255)

establece los últimos 8 bits de z (los que están más a la derecha) como 0,

En 32 bits sería 4294967282

Operadores para manejo de bits en ANSI C

Sistemas numéricos.

(62)

Ejemplo de una función que extrae la representación binaria de un entero positivo, independiente de la representación en la máquina. El resultado se devuelve en forma de cadena de caracteres.

void dec2bin(unsigned long num, char *cadbin)

/* Extrae la representación binaria del entero positivo 'num' y la devuelve en la cadena de caracteres 'cadbin'

*/

{ unsigned tam = 8*sizeof(unsigned long);

register unsigned k;

cadbin[tam] = '\0'; /* La cadena cadbin debe tener al menos tam+1 caracteres */

for(k = 1; k <= tam; k++) {

cadbin [tam-k] = ((num & 1) == 0) ? '0' : '1';

num >>= 1;

} }

Operadores para manejo de bits en ANSI C

Sistemas numéricos.

Referencias

Documento similar

If you are covered by a reciprocal agreement for health and social security (citizens of Denmark, Finland, France, Luxembourg, Norway, Portugal and Sweden), you may be eligible

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en

DECORA SOLO LAS IMÁGENES QUE NECESITES PARA LLEGAR AL NÚMERO CORRESPONDIENTE... CEIP Sansueña/CEIP Juan XXIII Infantil

Las personas solicitantes deberán incluir en la solicitud a un investigador tutor, que deberá formar parte de un grupo de investigación. Se entiende por investigador tutor la

Tal y como se hace constar en el artículo 29 del Real Decreto 412/2014, las solicitudes de plazas de estudiantes con estudios universitarios oficiales españoles parciales que deseen

La solución que se ha planteado, es que el paso o bien se hiciese exclusivamente por el adarve de la muralla, o que una escalera diese acceso por la RM evitando la estancia (De

Imparte docencia en el Grado en Historia del Arte (Universidad de Málaga) en las asignaturas: Poéticas del arte español de los siglos XX y XXI, Picasso y el arte español del

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados