Arquitectura de Sistemas. 5. Sistemas de numeración y representación interna.


Sistemas de numeración y representación interna











LINK AL CUADERNO CON TODA LA INFORMACIÓN DEL CAPITULO:


Sistemas de numeración y representación interna

Ahora vamos a estudiar un tema nuevo: Representación interna.

Motivación.

Qué es una computadora ?

Las computadoras COMPUTAN. Computar es procesar datos.

Esta proceso tiene siempre la forma Entrada ---- Proceso ---- Salida.

Qué tipos de computadoras conocen ?

PCs de escritorio, PCs tipo gamer, laptops, servidores, celulares, tablets, el módulo de electrónica de: una heladera, un aire acondicionado, las radios de los autos, la inyección electrónica, etc. (a estas últimas se las llama sistemas de tiempo real).

Para este curso nos interesan todas las computadoras anteriores.

Las computadoras son digitales. O sea, no son analógicas (niveles densos de señal).

Digitales----------- niveles discretos de señal ------------------- 0 o 1

En las computadoras todo ocurre en términos de ceros y unos.

En el curso, uno de los objetivos es construir conceptualmente una computadora. Entender sus partes y su funcionamiento.

Las entradas deben ser digitales, es decir, estar escritas en términos de ceros y unos. ESTO MOTIVA NUESTRO PRIMER TEMA, que es REPRESENTACION INTERNA, en el cual describimos los diferentes tipos de datos, en términos de ceros y unos.

Luego vamos a operar con los ceros y unos, y para eso precisamos un álgebra. Y por eso estuvimos estudiando el Algebra de Boole. Luego vimos circuitos, que los asociaremos a funciones del álgebra.

Representación interna.

Vamos a traducir diferentes tipos de datos en términos de ceros y unos, de modo que la computadora los pueda procesar.

  • Valores de verdad (V o F)
  • Naturales
  • Enteros
  • Reales
  • Chars
  • Strings

También son parte de la representación interna las digitalizaciones de imágenes, de sonidos, de video, etc.

Comencemos discutiendo cómo representar valores de verdad

Tomamos una convención:  por ejemplo F lo represento como 0 y V lo represento como 1.

U otra convención: por ejemplo F lo represento como 1 y V lo represento como 0.

Cuál es mejor ?

Mientras se pueda ir y volver no hay problema ambas sirven.

Usando la convención número 1: F ---0 V---1 representar F--------------------------------0

Me dan un enunciado y tengo que almacenar, usando la convención anterior, si es V o F:

“2=3” ----------0

“En Uruguay más de un equipo ha logrado la cuarta libertadores” ------------F------------0

Naturales

Cómo puedo representar el número 25 en términos de ceros y unos ?

La única que tenemos de expresar el 25 en términos de ceros y unos va a ser representando en binario.

25d=16+8+1 =11001b

(todavía no expliqué como lo hice!)

LA SOLUCIÓN VA POR ESTE LADO Y POR LO TANTO HAREMOS UN PARENTESIS MATEMATICO DONDE ESTUDIAREMOS COMO PASAR DE UNA BASE A OTRA.

(Luego del paréntesis, volveremos). Esto nos llevará algunas horas de clase…


Sistemas de Numeración

Nos interesan los sistemas de numeración POSICIONALES. En ellos, cada dígito aporta al número representado en función de su ubicación dentro del número.

Por ejemplo los números que usamos habitualmente, usan un sistema posicional, en base 10.

Por ejemplo los números romanos, no usan un sistema de numeración posicional, y no nos interesan.

Por ejemplo cuando decimos

358 d = 8 x 10**0 + 5 x 10**1 + 3 x 10 **2

45,23 d = 3 x 10**(-2) + 2 x 10**(-1) + 5 x 10**0 + 4 x 10**1

Vamos a tener una base y los dígitos van a ir desde 0 hasta el número anterior a la base.

Por ejemplo:

BINARIO, base 2, dígitos {0,1}

OCTAL, base 8, dígitos {0,1,2,3,4,5,6,7}

DECIMAL, base 10, dígitos {0,1,2,3,4,5,6,7,8,9}

HEXADECIMAL, base 16, dígitos {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}

¿ Qué es lo primero que aprendemos en matemática ?

A contar!!!!!!!!

Vamos a contar en distintas bases

BinarioBase 4Base 5OctalDecimalHexadecimal
000000
111111
1022222
1133333
100104444
1011110555
1101211666
1111312777
100020131088
100121141199
101022201210A
101123211311B
110030221412C
110131231513D
111032241614E
111133301715F
1000010031201610
1000110132211711
1001010233221812
1001110334231913
1010011040242014
1010111141252115
1011011242262216
1011111343272317
1100012044302418
11001121100312519
1101012210132261A
1101112310233271B
1110013010334281C
1110113110435291D
1111013211036301E
1111113311137311F
100000200112403220
100001201113413321
100010202114423422
100011203120433523
100100210121443624
100101211122453725
100110212123463826
100111213124473927
101000220130504028
101001221131514129
10101022213252422A
10101122313353432B
10110023013454442C
10110123114055452D
10111023214156462E
10111123314257472F
110000300143604830
110001301144614931
110010302200625032

Algunas observaciones:

En binario:

los números pares, terminan en… 0

                los números impares, terminan en…. 1

                las potencias son de la forma…..  100…0000

                los anteriores a las potencias de 2, son de la forma….. 1111…111

Cómo pasar de cualquier base a base 10

123 d = 3 x 10**0 + 2 x 10**1 + 1 x 10**3

101010 b = 0 x 2**0 + 1 x 2**1 + 0 x 2**2 + 1 x 2**3 + 0 x 2**4 + 1 x 2**5 =

Los ceros ya la próxima ni los pongo…

= 2 + 8 + 32 = 42 d

3410 o = 0 x 8**0 + 1 x 8**1 + 4 x 8**2 + 3 x 8**3 = 8 + 4 x 64 + 3 x 8**3 = 8 + 256 + 3 x 512 =776 + 1024 = 1800 d 

[ 8**3 = (2**3)**3=2**9=512 ]

CON decimales…

10,11 b = 3+1/2+1/4 = 3,75 d

3,2 o = 3 + 2/8 = 3,25 d

1,AB h = 1 + 10/16 + 11/256

10,01 b = 2 + ¼ =2,25 d

Pasar a base 10

1A,01Bh= 16+10+1/256 + 11/(16**3)d  =26+1/256 + 11/4096 d

45,67o= 5 + 4x8 + 6/8 + 7/64 = 37 + ¾ + 7/64 = 37,75 + 7/64 d

Cómo pasar de base 10 a base 2

Forma 1 ( J )

Buscamos las potencias de 2, en forma decreciente, dentro del número.

Ejemplo

1037 d = 1024 + 13 = 1024 + 8 + 5 = 1024 + 8+ 4+ 1=10000001101 b

Forma 2 ( L )

Cómo hacemos con los decimales ?

Acá sí el método 2 gana por destrozo….., multiplicamos por 2

Ejemplo:

Pasar a base 2: 10,75 d

10d=1010b

0,75 d =0,11 b

0,75 x 2 = 1,5

0,5 x 2 = 1,0

Ejemplo:

45,25 d = 101101,01 b

45 = 32 + 8 + 4 +1

0,25 x 2 = 0,5

0,5 x 2 = 1

Pasar a binario el número 2657,5 d = 101001100001,1b

2657= 2048 + 512 + 64 + 32 + 1 =101001100001

0,5d=0,1b

El método de las divisiones funciona para cualquier base, pero solo lo usaremos para pasar a base 2 y luego complementaremos con un truco.

Potencias de 2

1   2   4   8  16    32    64    128    256   512   1024   2048  4096  8192  16384 32768  65536

Conviene saberlas de memoria…

Pasar a base 2

0,2d =0,0011001100110011… =0,0011

0,2 x 2 = 0,4

0,4 x 2= 0,8

0,8 x 2 = 1,6                                                                     

0,6 x 2=1,2

0,2………….repite…….. por lo tanto queda decimal periódico y el período, lo que se repite, es

0011001100110011….

Un número como 0,2d quedó con una cantidad finita de dígitos luego de la coma en base 10, y con una cantidad infinita de dígitos después de la coma en base 2.

Otro ejemplo

0,1d=?

0,1 x 2 = 0,2

0,2 lo acabo de hacer…

Entonces 0,1 d = 0,00011

Ejemplos

353d = 256 + 64 + 32 + 1 = 101100001 b

35 d = 32 +2 + 1 = 100011 b

Como pasar de base 10 a base 2 con decimales.
Ejemplo

10,5 d = ¿?b

10,75 = ¿?b

10,2 = ¿?b

10,1 = ¿?b

10,12 = ¿?b

Para la parte entera, como siempre: 10 d = 8 + 2 = 1010 b

0,5 d = 0,1 b

0,5 x 2 = 1,0

Y corto porque me dio 0. Entonces 10,5d=1010,1 b

0,75 d = 0,11 b

0,75 x 2 = 1,5

0,5 x 2 = 1,0

Y corto porque me dio 0. Entonces 10,75 d = 1010,11 b

0,2 d = 0,0011 …

0,2 x 2 = 0,4

0,4 x 2 = 0,8

0,8 x 2 = 1,6

0,6 x 2 = 1,2

0,2 x 2……………. Se repite…. Entonces se va a repetir desde 0,2, o sea: 0011

Entonces estamos frente a un decimal, que en base 2, es periódico, y es:

0,2d=0,0011001100110011… b = 0,0011 b

Entonces 10,2d = 1010,0011 b

0,1 d = 0,0…

0,1 x 2 = 0,2 y este es el anterior

Entonces queda: 0,1 d = 0,00011 b El 0 no se subraya porque no es parte del período.

Entonces 10,1 d = 1010,00011 b

Consulta, desarrollo completo de 0,1:

0,1 x 2 = 0,2

0,2 x 2 = 0,4

0,4 x 2 = 0,8

0,8 x 2 = 1,6

0,6 x 2 = 1,2

0,2 x 2 REPETIDO

Entonces

0,1 d = 0,00011001100110011… = 0,00011 b

0,12 d=0,00011………

0,12 d x 2 = 0,24

0,24 x 2 = 0,48

0,48 x 2 = 0,96

0,96 x 2 = 1,92

0,92 x 2 = 1,84

………..sigo hasta cuando ¿?

Entonces 10,12 d = 1010,00011… b

Pero no sé como sigue

Primero: los irracionales, que tienen infinitas cifras después de la coma y en formato aperiódico, se comportarán así en cualquier base. No es el caso de este número, que es un racional: 10,12 d=1012/100, es un racional.

Los racionales, pueden tener un largo fijo de dígitos después de la coma, y en tal caso el método se detiene pues tropieza con un cero.

Pero el segundo caso, pueden ser periódicos. Y no hay otra opción.

En ese caso anterior, nosotros estamos “sacando” números entre 0 y 99:

 Salió el 12, 24, 48, 96, 92…. Y estamos esperando que se repitan. Ocurrirá ? Por supuesto, en el peor caso, ocurrirá luego de 100 intentos.

En la práctica, cuando estamos traduciendo estos números, tenemos una cierta cantidad de bits para rellenar. Cuando los relleno, paro ahí, y en todo caso marco avisando que “se ha perdido precisión”.

Por ejemplo si quiero guardar (y esto aún no lo vimos) 0,1 de modo tal que tengo 8 bits para guardar su parte decimal, supongamos, queda así:

0,1d=0,0001100110011…. B

Y si tengo que guardar 8 bits, guardaré los números marcados en rojo: 00011001, avisando que hay error de representación. Es un error habitual y se convive con él, ordenadente.

Y si tuviera que “volver” de ese valor, sería el número 0,00011001 b

El cual si lo vuelvo a base 10, es: 1/16 + 1/32 + 1/256=0,0625+0,03125+0,00390625=0,09765625 d

Y si lo resto de 0,1d , la diferencia es: 0,00234375 , que es la magnitud del error cometido.

Este tipo de errores, que no son de medición (esos también existen) sino que son de representación, ocurren todo el tiempo en informática, pues los R no son representables. Esto a su vez porque ni el infinito ni la densidad (entre 2 reales siempre hay otro real, (a+b)/2), características de los R, son representables en computadoras.

De todos modos vamos a buscarlo en Excel el período.

Y ahí encontramos el período, el cual sabíamos que en 100 intentos a lo más lo íbamos a hallar!

Ejercicio

Pasar el número 67,4 d a binario.

67 d= 64 + 2 + 1 = 1000011 b

0,4 d= 0,0110 b

0,4 x 2 = 0,8

0,8 x 2 = 1,6

0,6 x 2 = 1,2

0,2 x 2 = 0,4

67,4 d = 1000011,0110 b

Pasajes entre bases que son potencia de 2

(OJO esto vale sólo para esas bases)

Como 2**3 = 8 entre OCTAL Y BINARIO tomo de a 3

Como 2**4 = 16 entre HEXADECIMAL Y BINARIO tomo de a 4

Como 2**2 = 4 entre bases 2 y 4 tomo de a 2

Etc

Ejemplos

Pasar el número

345,4 o a binario

345,4 o= 011 100 101,100 b = (elimino ceros a la izquierda del lado entero y ceros a la derecha del lado decimal) = 11100101,1b

Ejercicios:

Pasar el número

AB4,5 h  a binario

AB4,5 = 1010 1011 0100 , 0101 b

Pasar el número 101010110100,010100 b a Octal

101010110100,010100 b = 5264,24 o

Pasar el número 1100101,10111 b a hexadecimal

01100101,10111000 b = 65,B8 h

Ejemplo

Pasar el número AB12CD45,11 h a octal

AB12CD45,11 h = 1010 1011 0001 0010 1100 1101 0100 0101, 0001 0001 b =

01010 1011 0001 0010 1100 1101 0100 0101, 0001 00010 b =

= 25304546505,042 o

Verificación, lo volvemos a hexa

 25304546505,042 o= 10101011000100101100110101000101,000100010000 b=

= AB12CD45,11 h quedó el mismo número así que OK

Ejercicio

Pasar los siguientes números a las bases 2,8, 10 y 16.

1011,010 b

-235,77 o

128,45 d

-AA54,69 h

E 2 a

1011,01 b = 11,25 d = B,4 h = 13,2 o

-235,77 o =-10011101,111111 b = -9D,FC h = -(13+9*16+15/16+12/256) d

128,45 d = 10000000,011100 b 

0,45 x 2 = 0,9

0,9 x 2 = 1,8

0,8 x 2 = 1,6

0,6 x 2 = 1,2

0,2 x 2 = 0,4

0,4 x 2 = 0,8

10000000,011100 b = 10000000,01110011001100110011001100….=

= 200,3463146… o =200,34631 o

10000000,011100 b = 10000000,0111001100110011001100…b =

= 80,7333…. h = 80,73 h

-AA54,69 h = -1010 1010 0101 0100 , 1100 1001 b =

=-125124,622 o = -(4+16x5+2560+16**3x100+6/16+6/256)d

Suma en base 2

AB4,5 h  pasarlo a binario.

AB4,5h = 1010 1011 0100, 0101 b

1A,8h = 0001 1010,1000 b = 11010,1 b

11010,1 b = 011010,100b=32,4 o

101010110100,010100 b = 5264,24 o

Ejercicios de repaso de la suma binaria

1010 1010 b + 1111,1111 b =

Nunca podemos sumar números en diferentes bases. Se debe pasar a la misma base.

Siempre es más fácil utilizar la base más grande posible.

Suma en otras bases


Ejercicios

BCD,9981 h + AB94,57Bh =B761,F131h

765,333 o+ 3764,227o = 4751,562o

AB12 h + 543,4o=

2345,6 o + 2345,6 h =

Resta en binario

Ejercicio

456,56d x 10d=4565,6d

-456,56d x 100d=-45656d

-456,56d / 10d=-45,656d

456,56d / 100d=4,5656d

101010,11b x 2d =101010,11b x 10b= 1010101,1b

101010,11b/4d=1010,1011b

1010,1b x 100b=101010b

-AB,45h x 100h=-AB45h

AB45h x 256d=AB4500h

745o x 64d=745o x 100o=74500 o

-33,65o/64d=-0,3365o

-33,657o/100o=-0,33657o

Ejercicios

  1. Expresar los siguientes números dados en base 10 en base 2 (binario) y 16 (hexadecimal)
  1. 1234 d = 1024 + 128 + 64 + 16 + 2 = 10011010010 b = 4D2 h 
  2. 32 d = 100000 b = 20 h
  3. 128 d = 10000000 b = 80 h
  4. 255 d = 11111111 b = FF h
  5. 65536 d = 1 0000 0000 0000 0000 b = 10000 h
  6. 3226 d=  2048 + 1024 + 128 + 16 + 8 + 2 =  1100 1001 1010 b = C9A h
  • Realizar las siguientes conversiones entre sistemas numéricos
  1.  1010 1010b  = AA h
  2. 231o = 10011001 b
  3. 1A,Fh = 11010,1111 b
  4. FFh= 1111 1111b
  5. ABCh = 12+16.11+10.256=12+176+2560=2748 d
  6. 100 1111 0000b = 16.15+12.256 = 3312 d

Otra forma

1100 1111 0000b= 16+32+64+128+1024+2048=3312d

  • 123Fh= 1001000111111 b
  • 110011110000 o =1 001 000 000 001 001 001 001 000 000 000 000 b
  • 10 111 111b= 277o
  • 423o=1 0001 0011b= 113h
  • Expresar los siguientes números dados en base 10 en base 2 (binario)

a_ 64,45 d

64,45d=100 0000,011100 b

0,45 x 2 =0,9

0,9 x 2 = 1,8

0,8 x 2 = 1,6

0,6 x 2 = 1,2

0,2 x 2 = 0,4

0,4 x 2 = 0,8

b_ 32,123

32,123d= 100000,0001111100… b

0.123

0.246

0.492

0.984

1.968

1.936

1.872

1.744

1.488

0.976

  • Sumar los siguientes números expresados en base 2

a_ 11110000 + 1111 = ?

11110000 + 1111 = 11111111 b

b_ 1000111110100000 + 11111111 = ?

1000 1111 1010 0000 b

                    1111 1111 b

-----------------------------

 1001 0000 1001 1111 b

8FA0 h

+   FF h

-------

909F  h

5) Restar los siguientes números en base 2.

a_ 1000 1110- 1111 = 111 1111 b

b_1111 1111 1010 0000 – 1010 0000 = 1111 1111 0000 0000 b

c_ 1111 1111 1000 1111 – 1111 1100 = 1111 1110 1001 0011b

6) Sumar los siguientes números expresados en base 16

a_ E + 1 = F

b_ 123 + BC = 1DF h

c_ FF + A = ?

Ejemplos de Multiplicaciones

34d x 10d = 340d

1010 b x 2d = 10100 b

FF h x 16d = FF0 h

FFh x 10h = FF0 h

1,23 d x 100d = 123d

1,23 o x 8d = 12,3o

7) Multiplicar los siguientes números

a_ (1000011)b x (2)d = 10000110 b

d_ (321)h x (16)d = 3210 h

b_ (11100011)b x (2)d =111000110 b

e_ (AB45)h x (10)h = AB450 h

c_ (111001)b x (100)b = 11100100 b

f_ (AB45)h x (256)d = AB4500h


8) Dividir los siguientes números

a_ (10010110)b % (2)d = 1001011 b

d_ (123456)h % (10)h = 12345,6 h

b_ (100100110000)b % (4)d = 1001001100 b

e_ (98C3B)h % (10)h = 98C3,B h

c_ (1111011111111101)b % (8)d= 1111011111111,101 b

f_ (437FFF)h % (256)d = 437F,FF h

9) 2345,66o – 777,7 o = 1345,76 o

10)   1101,0111 h – 1101,0111 o = 1101,0111-241,049h= EBF,FC81 h

SI PONEN QUE ESO DA CERO, ARDE TROYA.

1101,0111 o= 1001000001,000001001001 b = 241,049 h



Representación Interna


Representación de Booleanos OK , muy simple.


Representación de NATURALES


Vamos a usar los BITS como unidad de información. Un BIT puede valer 0 o 1.

1 byte = 8 bits

K = 2**10

M = 2**10 K

G = 2**10 M

T = 2**10 G

P = 2**10 T

1 Kbit = 1024 bits

1 Kbyte = 1024 bytes = 1024 x 8 bits

Cuando se discuta una representación, siempre será relativa a una cantidad de BITS.

Por ejemplo: Naturales sobre N bits.

Una representación es una convención, o sea un conjunto de reglas, que acordamos para representar, es decir para hacer corresponder elementos entre dos conjuntos. Es absolutamente arbitraria. Su único requisito de coherencia es poder ir y volver, es decir representar y volver de la representación.


Ejemplo de representación de N sobre 8 bits.

Sea x el número a representar.

(y acá hay que explicar qué hacemos con x para ir desde x a su representación sobre los 8 bits).

Escribimos x en base 2, binario.

Recostamos a la derecha y completamos los 8 bits con 0s a la izquierda, obteniendo la representación del número.

Por ejemplo

El 4d=100b          00000100  esta es su representación.

Esos ceros a la izq importan o no ? SIIIIIIII , son vitales, porque sobre 8 bits tenemos que rellenar los 8 bits.

NO IGUALAR COSAS DE DISTINTO TIPO!

4d esto es un Natural a representar

100b esto es el mismo Natural 4d escrito en base 2 y se cumple 100b=4d

00000100 es una tira de bits, de largo 8, que resulta, bajo la representación anterior, ser la representación del 4d=100b.

NO IGUALO una tira de bits con un Natural. Son elementos de conjuntos diferentes.

Por ejemplo

14,5d en la representación queda representado como: NO ES UN NATURAL, no se representa.

-8d en la representación, queda representado como: NO ES UN NATURAL, no se representa.

0d se representa como 00000000

Cuál es el número más grande que puedo representar:

Queda representado como 11111111

Y este es el 11111111b = 255 = 2**8-1

En general, esta representación sobre n bits tiene rango: 0.. 2**n-1.

MUY IMPORTANTE: Los N no están acotados superiormente, y estás representaciones (todas) lo estarán.

En informática el infinito no podemos capturarlo.

Los N son infinitos y esta representación, cuyo rango vimos, sobre n bits, representa apenas 2**n de esos infinitos N.

Ahora bien, las representaciones son arbitrarias. Podíamos pensar una menos intuitiva.


Representación 2 para N sobre 8 bits

Sea x el número a representar.

Lo escribimos en base 2.

Lo recostamos a la izquierda, como un espejo, y rellenamos con 0s a la derecha.

Por ejemplo el 4d=100b queda:   00100000

El 12d=1100b queda: 00110000

Si me dicen, qué número es el: 00010001 ¿?

Es el  10001000b=128+8=136d

Por ejemplo el 6d=110b queda: 01100000

Qué representación es mejor ?

 No hay una mejor que otra, mientras sean biyectivas, permitan ir y volver, todo bien.

Ejemplo 3 de representación de N sobre 8 bits. CON PERDIDA DE PRECISIÓN.

Sea x el número a representar.

Escribimos x en base 2.

Descartamos el bit de más a la derecha.

Rellenamos con 0s a la izq hasta completar 8 bits.

Ejemplo: 4d=100b se representa como:

100b, le podamos el 0 de más a la derecha, quedando 10 y completo con 6 0s a la izq, obteniendo:

00000010 esta es la representación del 4.

Ejemplo:

67d=64+3=1000011b

Podamos y queda el 100001

Y queda:   00100001

Ejemplo

2d=10b

Podamos y queda 1, la representación es 00000001

Ejemplo

66d=64+2=1000010b

Podamos y queda el 100001

Y queda: 00100001

Observación: el 66d y el 67d coinciden en la representación.

Primer asunto: Formalmente no sería válida, porque confunde elementos, por ejemplo: 0 y 1, 2 y 3, … 66 y 67…

Hay alguna ventaja ?  SIIIII. Esto representa el doble de números!!!!

Exploremos el rango.

El más chico es 00000000 , que corresponde al 0d y al 1d

El más grande es 11111111, que corresponde a:

111111110b y a 111111111b que son el 510d y 511d respectivamente.

Por lo tanto mi rango ahora es de 0 a 511.

Es cierto que lo logramos a costa de sacrificar precisión, pues cada número se me confunde con el siguiente.

Es la misma cantidad de números, lo cual es razonable, sobre 8 bits yo tengo 256 números, que son las 2**8 combinaciones que puedo hacer de 0 y 1.

Esta representación si bien no es biyectiva, “entrevera en forma controlada” y esto nos permite tener un rango más grande a costa de perder precisión.

En qué nos serviría perder precisión para ganar rango ?

No debemos asustarnos de la pérdida de precisión. Es parte de nuestro mundo. Y es parte del mundo digital.

Por ejemplo, si un carrito en un laboratorio de física, va a pi m/s, en realidad uso un velocímetro de precisión acotada que leerá y digitalizará capaz, 3,1416 m/s y cuando lo vaya a guardar tal vez pierdo precisión y guardo 3,142 m/s y aún me sirve para mi experimento. Me sirve siempre que sepa dónde está el nivel de error. No puedo en este experimento expresar conclusiones con 8 cifras decimales, están contaminadas de error!!!!!

En informática, en especial con los R, que vamos a estudiar, es habitual cometer errores controlados: por medición (le importa desde el punto de vista físico), por digitalización (le importa al electrónico) y por representación (le importa al informático), y el error es la suma de los 3.

Y esto, si se trabaja mal, puede traer consecuencias nefastas.

Ejemplo:

https://www.xataka.com/historia-tecnologica/dia-que-misil-mato-a-28-soldados-porque-sistema-defensa-antimisiles-ignoro-error-0-000000095-segundos

La disciplina que estudia esto es el cálculo numérico.

 En qué nos serviría perder precisión para ganar rango ?

Una vez que entendimos que perder precisión es algo habitual en los R, entonces, para ganar rango, nos puede interesar perderla en los N.

Ejercicio

Propón un esquema de representación de Naturales sobre 8 bits, donde el 64000 sea representable.

RESPUESTA NECIA:

00000000 es el 0

11111111 es el 64000

“Y los demás poné como quieras”

Está perfecto.

Reformulación de la letra, a prueba de respuestas necias!:

Propón un esquema de representación de Naturales sobre 8 bits, donde el 64000 sea representable y todos los números entre 0 y 64000 sean representables de alguna forma razonable.

Obviamente hay que perder precisión, porque tenemos 256 posibilidades y 64001 números.

El número 65536=2**16 nos puede ayudar.

65535d =1111111111111111b

O sea que sin perder precisión, necesitaría 16 bits. Pero tengo sólo 8.

Los otros 8 los vamos a lograr perdiendo precisión.

Representación:

Sea x el número a representar.

Lo escribimos en base 2, y descartamos los 8 bits de más a la derecha.

Luego rellenamos con 0s a la izq para lograr 8 bits de largo.

Ejemplo:

32d=100000b  se representa como 00000000

32768d=1000000000000000b se representa como 10000000

Vamos al 64000d=32768+16384+8192+4096+2048+512=1111101000000000b

Y se representa como: 11111010

Se pierde una cantidad de precisión! El 0, el 1, … se confunden en el 00000000

0 00000000

….

11111111b

Del 0 al 255 se me confunden con el 0… y así, en tandas de 256.

Otro ejemplo

Dar una representación de N sobre 4 bits donde, perdiendo precisión, el 128 se representable.

128d=10000000b

Precisaría 8 bits, pero tengo 4, entonces vamos a descartar los 4 bits de la derecha.

Representación:

Sea x el número a representar.

Lo escribimos en base 2, y descartamos los 4 bits de la derecha. Luego rellenamos con 0s a la izquierda hasta completar los 4 bits.

128d=10000000b queda 1000

En realidad 1000 es tanto el 128d=10000000b como el 10001111b que es el 128+15=143d

Del 128 al 143 se confunden en el 1000 en esta representación. Hay pérdida de precisión, pero sobre 4 bits logré el rango que me pedían.

Representación de Enteros

Z=N U {-n/n pertenece a N} o sea los Naturales y sus opuestos.

Es un conjunto infinito, no acotado ni superior ni inferiormente.

Vamos a tener varias familias de representaciones:

  • Módulo y Signo
  • Complemento a 1
  • Complemento a 2
  • Desplazamiento 2**(n-1)
  • Desplazamiento 2**(n-1)-1



Se les podría incorporar la pérdida de precisión, pero no lo haremos, ya quedó entendido eso.

Ahora la gran pregunta es ¿ cómo metemos los negativos en este juego ?

Módulo y signo

Ejemplo de representación en M y S sobre 8 bits.

Sea  x el número a representar.

Representamos en base 2, abs(x)    (valor absoluto) sobre los 7 bits de la derecha.

Si x >=0 entonces ponemos un 0 en el bit de más a la izq.

Si x<=0 entonces ponemos un 1 en el bit de más a la izq.

Atención: poner 1 para los negativos es tan arbitrario y válido como poner un 0. Recuerden que es un ejemplo.

Atención: Que no sean disjuntas las condiciones del “si”, me genera 2 representaciones para el 0, lo cual es una molestia.

Ejemplo

4d=100b queda 00000100

El -4d=-100b queda 10000100

El 64d=1000000b queda 01000000

El -64d queda 11000000

El número más chico es el -127d = -1111111b que queda representado: 11111111

El número más grande es el 127d=1111111b que queda representado 01111111

El cero queda como 00000000 y el -0=0 queda 10000000

Son el mismo número y me gasto 2 posibilidad en el…

Esto hace que tengamos 256 posibilidades, sobre 8 bits y tengamos 127 positivos, 127 negativos y el 0, que son 255 números.

El que falta, me lo “roba” el doble 0.

Observaciones:

  • Doble cero (L)
  • Rango simétrico (J)
  • No conserva las operaciones (L)
  • Obviamente los Z no están acotados y esta representación (y todas) lo están (L)

La conservación de las operaciones, va a ser una propiedad del complemento a 2, que me permitirá sumar como binarios comunes y que se conserve el signo.

Por ejemplo, en la representación anterior.

-4d = -100b   10000100

-5d=-101b  10000101

Los sumo -4d + (-5d) = -9d

Sumemos las representaciones como binarios…

   10000100

+ 10000101

   00001001 y hay un 1 que se “cayó” (se llama ovf)

Me dio 9, perdió el signo…

No conserva.

O bueno, para que conserve, tengo que hacer la salvedad del signo, manejarlo aparte, en cada caso… y eso complica la algoritmia.

Ejercicio

Si tenemos el módulo y signo sobre 4 bits, completar todas las posibilidades y sus correspondientes.

0000  es el 0

0001     1

0010    2

0011    3

0100    4

0101    5

0110  6

0111  7

1000   0

1001  -1

1010  -2

1011   -3

1100 -4

1101  -5

1110   -6

1111   -7

Ahí tienen el rango explícitamente, va de -7 a 7.

Estamos con:

Inraestructura àArquitectura àRepresentación Internaà Representación de Enteros

Representación de Enteros, hay 5 familias de representaciones:

  • Módulo y Signo
  • Complemento a 1
  • Complemento a 2
  • Exceso 2**(n-1)
  • Exceso 2**(n-1)-1

Habíamos visto Módulo y Signo.

Representación de Enteros en Complemento a 1

Ejemplo

Sobre 8 bits

Sea x el número a representar.

Si x >=0 entonces representamos valor absoluto(x) sobre los 8 bits, completando con Ceros a la Izquierda. Observación: el bit de más a la izquierda DEBERÁ quedar en 0.

Si x<=0  entonces representamos valor absoluto(x) sobre los 8 bits, completando con Ceros a la Izquierda. Observación: el bit de más a la izquierda DEBERÁ quedar en 0. (IDENTICO A ANTES) PERO LUEGO, intercambiamos todos los ceros por unos, todos los unos por ceros. Entonces, el bit de más a la izquierda pasará a quedar en 1.

Problema: el cero concuerda con ambas parte de la definición, y tendremos dos representaciones para el cero.

Ejemplo dentro del ejemplo

Representar:

5d=101b………..  00000101 es su representación.

-5d  ………. 00000101 -----  11111010 es su representación.

0d=0b …………… 00000000 es su representación

También 11111111 es una representación del cero, basada en el “-0”.

67d= 1000011b…………………. 01000011 es la representación del 67d.

-67d………………… 10111100 es su representación.

128d=10000000b no queda representable, pues el bit de más a la izquierda está quedando en 1 y debería estar en 0.

OBSERVACIÓN: El bit de más a la izquierda se comporta como un bit de signo. Pero como consecuencia de la construcción.

OBSERVACIÓN: Los positivos quedan idénticos que en Módulo y Signo.

Rango:

Número más grande: 01111111 ------127d

Número más chico: 10000000 -----   -127d

Rango: -127..127

Doble cero: 00000000     11111111

No conserva las operaciones.

Obviamente es acotada.


Representación de Enteros en Complemento a 2

Ejemplo

Sobre 8 bits

Sea x el número a representar.

Si x >=0 entonces representamos valor absoluto(x) sobre los 8 bits, completando con Ceros a la Izquierda. Observación: el bit de más a la izquierda DEBERÁ quedar en 0.

Si x<0  entonces representamos valor absoluto(x) sobre los 8 bits, completando con Ceros a la Izquierda. Observación: el bit de más a la izquierda DEBERÁ quedar en 0. (IDENTICO A ANTES) PERO LUEGO, intercambiamos todos los ceros por unos, todos los unos por ceros. Y SUMAMOS 1 y descartamos cualquier acarreo que surja más allá de los 8 bits.  Entonces, el bit de más a la izquierda pasará a quedar en 1.

Ejemplo dentro del ejemplo

Representar:

5d=101b………..  00000101 es su representación.

-5d  ………. 00000101 -----  11111011 es su representación.

0d=0b …………… 00000000 es su representación

¿Y cuál será el -0?

Investiguemos:

00000000

11111111

Sumo 1

00000000 y descarté un 1 más a la izquierda. Así que queda el mismo cero.

67d= 1000011b…………………. 01000011 es la representación del 67d.

-67d………………… 10111101 es su representación.

128d=10000000b no queda representable, pues el bit de más a la izquierda está quedando en 1 y debería estar en 0.

Pero, si tengo 127 positivos y 127 negativos, y el 0, son en total, 255. Y el rango me da 256 posibilidades. Falta un número.

El doble cero ya vimos que no es. Así que busquemos en los extremos del rango.

El 128 me quedaría 10000000 negativo, con lo cual no sirve, no es.

¿ El -128 ?

Investiguemos

128…………… 10000000

Cambio 0s con 1s …………….. 01111111

Sumo 1 ……………… 10000000 y empieza con 1, lo cual es coherente para un negativo.

Entonces el 10000000 corresponde al número -128.

Encontramos el número que faltaba!

OBSERVACIÓN: El bit de más a la izquierda se comporta como un bit de signo. Pero como consecuencia de la construcción.

OBSERVACIÓN: Los positivos quedan idénticos que en Módulo y Signo y a complemento a 1.

Rango:

Número más grande: 01111111 ------127d

Número más chico: 10000000 -----   -128d

Rango: -128..127

Único cero: 00000000    

SIIIIII conserva las operaciones.

Obviamente es acotada.

Otro ejemplo dentro de la representación ejemplo

84d=64+16+4=1010100b ……. 01010100 es su representación

-84d………….. 01010100……….. 10101011 y sumo 1…. 10101100 es su representación

Otro ejemplo dentro de la representación ejemplo

A qué número corresponden?

00110000 …….. es positivo porque empieza en 0…. 48d es el número al cual corresponde.

11001100…. Es negativo porque empieza en 1. Así que le aplico el método exactamente al revés.

11001100 le resto 1…….. 11001011 y cambio 0s con 1s….   00110100, que es el número 4+16+32=52. Por lo tanto corresponde al -52.

Vamos a hacer un ejercicio que nos muestra que se conservan las operaciones en esta representación.

Parte 1

En el complemento a 2 sobre 8 bits antes descripto.

Representar los números:

16d: ………… 00010000

-16d: …………….11110000

32d: …………. 00100000

-32d: …………. 11100000

0: ………… 00000000

Vamos a sumar esas tiras de largo 8 bits, como binarios comunes, haciendo:

16d + 32d= tiene que dar 48d

16d -32d= tiene que dar -16d

-16d + 32d=tiene que dar 16d

-16d – 32d=tiene que dar -48d

16d – 16d=tiene que dar 0d

PERO lo vamos a hacer sumando las REPRESENTACIONES.

16+32:

    00010000

+  00100000

    00110000

Qué número dio?

ES POSITIVO, empieza en 0, y es 16+32=48, lo que esperaba

16d-32d

   00010000

+ 11100000

   11110000

Empieza en 1, le resto 1

11101111

Cambio ceros y unos

00010000

Entonces el número es -16, que es lo que buscaba.

-16+32 tiene que dar 16

-16d: …………….11110000

32d: …….………. 00100000

                            00010000 que es el 16.

-16-32 tiene que dar -48

-16d: …………….11110000

-32d: ..…………. 11100000

                           11010000

Es negativo, le resto 1

11001111

Cambios ceros y unos

00110000 que es el 48

Con lo cual el número era -48d que es lo que buscaba.

16-16 tiene que dar 0

16d: …….……… 00010000

-16d: …………….11110000

                           00000000

Dio 0 que es lo que me tenía que dar.

CONCLUSION (no fue una demostración pero mostramos)

SE CONSERVAN LAS OPERACIONES, es decir, la representación de la suma es la suma de la representaciones.

Esta es una muy importante propiedad del complemento a 2.

Me permite sumar o restar usando el mismo circuito de suma.

Representación de Enteros en Desplazamiento o Exceso 2**(n-1)

Igual que en los otros casos, vamos a explicarlo mediante una representación ejemplo.

Ejemplo

Sobre 8 bits

n=8

2**(n-1)=128=D

Sea x el número a representar.

Calculamos x+D=x+128 y lo representamos sobre 8 bits, pasando a binario y recostando a la derecha, rellenando con 0s a la izquierda.

Ejemplo dentro del ejemplo

17d….. 17+128……….. 10010001 es la representación del 17d.

Observación, sumar 128, en un positivo, es lo mismo prender el bit de más a la izquierda.

-17d…. -17+128=111=64+32+15 ……………… 01101111 es la representación del -17d.

Observación, cuando comienza en 0 corresponde a los negativos.

0d…….. 0 +128 ………… 10000000

Número más grande?

Va a quedar representado como 11111111…. 255

255=128+x entonces x=127

Número más chico?

Va a quedar representado como 00000000…. 0

0=128+x entonces x=-128

Rango: -128..127

Hay un único 0

Rango asimétrico

Obviamente acotado

NO conserva las operaciones.

El bit de signo queda cambiado, no vale la pena razonarlo como un un bit de signo.

Representación de Enteros en Desplazamiento o Exceso 2**(n-1)-1

Igual que en los otros casos, vamos a explicarlo mediante una representación ejemplo.

Ejemplo

Sobre 8 bits

n=8

2**(n-1)-1=128-1=127=D

Sea x el número a representar.

Calculamos x+D=x+127 y lo representamos sobre 8 bits, pasando a binario y recostando a la derecha, rellenando con 0s a la izquierda.

Ejemplo dentro del ejemplo

17d….. 17+127=16+128………..10010000  es la representación del 17d.

Observación, sumar 128, en un positivo, es lo mismo prender el bit de más a la izquierda. Para llevarlo a este caso, sumar 127 es lo mismo que sumar 128 y restar 1.

-17d…. -17+127=110=64+32+14 ……………… 01101110 es la representación del -17d.

Observación, cuando comienza en 0 corresponde a los negativos.

0d…….. 0 +127 ………… 01111111

Número más grande?

Va a quedar representado como 11111111…. 255

255=127+x entonces x=128

Número más chico?

Va a quedar representado como 00000000…. 0

0=127+x entonces x=-127

Rango: -127..128

Hay un único 0

Rango asimétrico

Obviamente acotado

NO conserva las operaciones.

El bit de signo queda cambiado, no vale la pena razonarlo como un un bit de signo.

Ventajas de cada una de las representaciones

Módulo y signo………… muy simple

Exceso………… muy rápido de calcular

Complemento a 2…… conserva las operaciones

En el lenguaje de programación, por ejemplo, las variables con tipo Entero deben guardarse en alguno de estos formatos, o en el arbitrario que se elija, pero se debe especificar cual. Por ejemplo el tipo short de Java corresponde a complemento a 2 sobre 8 bits y se mueve en el rango -128..127.

https://stackoverrun.com/es/q/827742

El programador obviamente se abstrae de esto, no le importa.

Uds. pueden hacer programas de test para descubrir los límites de su representación.

Por ejemplo,

Cuál es el entero más grande del tipo int de mi lenguaje de programación ?

Lo salgo a buscar con este programa:

A=1

While (A+1>A)

      B=A

      A++

End

Print B

Supongamos que está trabajando en complemento a 2 sobre 8 bits. El más grande es 127. Este es 01111111, cuando haga A++, quedará 10000000, lo cual es el -128. Y ahí cortará el while.

Ver planilla Excel con todos los casos sobre 4 bits.


Representación de Números Reales.

Hay varias formas de caracterización de los números reales. Lo más común es la teoría axiomática.

Nosotros los vamos a asociar a la recta, no tienen cota superior, ni inferior, y además es un conjunto denso, o sea no es discreto, o sea entre dos R siempre hay otro R ( entre a y b siempre está (a+b)/2 ).

Vamos a usar dos técnicas.

La primera es representación de R en punto fijo. Utiliza la coma fija, es decir, decide una cantidad de bits para la parte Entera y otro tanto para la parte decimal.

Ejemplo

Sobre 16 bits:

  • destinamos los primeros 8 bits desde la izquierda a la parte Entera.
  • luego los siguientes 8 bits a la parte decimal.
  • La parte Entera en módulo y signo (esta elección es arbitraria), tal como vimos en Z.
  • La parte decimal, en fracción binaria pura, recostada a la izquierda y rellenando con ceros a la derecha.

En este ejemplo, algunos ejemplos de números concretos:

8d = 1000b  queda:     00001000 00000000

-8d queda:       10001000 00000000

0 queda:      00000000 00000000 y también 10000000 00000000

8,5d=1000,1b queda      00001000 10000000

-8,5d   queda       10001000 10000000

Me dan 00001000 11000000  quiero saber cuál es…

+1000,11b=8,75d

35,2d= 100011,0011b   se representa  00100011 00110011 hay pérdida de precisión.    

0,2x2=0,4

0,4x2=0,8

0,8x2=1,6

0,6x2=1,2

-35,2 se representa como  10100011 00110011 y también se pierde precisión.

Cuánto se pierde de precisión ?

Desarmemos el número representado:

00100011 00110011 refiere al número:

35 + 1/8 + 1/16 +1/128 + 1/256 =35,19921875

Por tanto el error cometido en la representación es:

Valor absoluto(35,2-35,19921875)= 0,00078125

Podemos notar que nuestro rango de representación va de:

11111111 11111111  que es el -127+(1/2+1/4+….+1/256)=-127,99609375

Hasta su opuesto 127,99609375

Los números dentro del rango están equiespaciados, a una distancia de…. 1/256

Este 1/256 nos da una medida de la precisión, pues es lo más pequeño que podemos representar.

En punto fijo, la precisión está fija a lo largo de todo el rango.

Observemos:

Precisión = 1/256=0,00390625

Error obtenido en el caso concreto del 35,2 , que tuvimos que tomar las primeras 8 de sus infinitas cifras después de la coma (es periódico)… era 0,00078125

Este error es menor que la precisión. 0,00078125 < 0,00390625

La precisión nos está indicando una cota superior del error cometido al representar.

Esto, en punto flotante es mucho  más complejo, porque la precisión no es fija!

El punto fijo no conserva las operaciones.

Representación de Reales en punto flotante.

Para el punto flotante se debe descomponer el número en la siguiente expresión:


Sea x el número a representar:

x= signo x mantisa x (base ** exponente)

Y entonces la base se deja fija, usualmente es 2.

Por tanto, nos queda:

X= +/- mantisa x 2 **(exponente)

Y en consecuencia el número a representar queda representado por la terna signo, mantisa, exponente.

Por ejemplo:

+32,5d = +100000,1 b = +100000,1 x 2**0=+1000001 x 2**(-1)=+10000,01 x 2**1…

Y así, podríamos seguir, con infinitas alternativas entre mantisa y exponente.

Por tanto, hay muchas parejas de s, m, e que cumplen la igualdad.

Para quedarnos con una, se normaliza, es decir damos una regla de selección de la mantisa. Para así quedarnos con solamente una, entre las infinitas posibilidades.

Esta es, para nuestro caso (y para el estándar que tomaremos) TOMAR LA MANTISA QUE TIENE LA FORMA 1,ALGO.

En el caso del ejemplo +32,5d=+100000,1b=+1,000001 x 2 **5

Y entonces el signo será + , la mantisa será 1,000001 y el exponente será 5.

Los guardamos de acuerdo a las reglas de la representación, que aún no las vimos.

Como las representaciones son arbitrarias, hay , además de la selección de la forma de normalización que acabamos de hacer, muchas formas de guardar signo, exponente y mantisa en una tira de bits.

Al dar la representación de punto flotante, tenemos que seleccionar alguna.

En todas las representaciones anteriores (N, Z, etc) hemos dado ejemplos entre las posibles representaciones.

Para nuestro caso, debemos seleccionar alguna.

Y VAMOS A USAR EL ESTANDAR IEEE 754 para punto flotante.

Un detalle exhaustivo del mismo está en https://es.wikipedia.org/wiki/IEEE_754

Esto escapa a los objetivos del curso, pero lo damos como una referencia hacia un análisis más profundo.

Hay dos precisiones: alta y baja con 64 y 32 bits respectivamente.

Trabajaremos sobre 32 bits.

Esa figura nos muestra cuántos bits vamos a destinar, y en qué orden.

S ------------ 1 si es negativo y 0 si es positivo

Exponente en los 8 bits siguientes.

Mantisa en los 23 bits siguientes.

Nos resta explicar en qué formato representaremos el entero exponente y la mantisa.

MANTISA………….. es de la forma 1,ALGO.

El “1,” no se guarda, ya sé que está. Entonces guardamos el ALGO, que se llama fracción binaria pura, y se guarda recostado a la izquierda, rellenando con ceros a la derecha.

El exponente, se guarda, como entero que es, sobre 8 bits, en exceso 2**(n-1) -1, que es 127.

Vamos a proceder, en el marco del ejemplo, a representar 32,5 en el IEE 754

+32,5=100000,1=100000,1x2**0=1,000001x2**5

Signo …………… 0

Exponente es 5, se representa 5+127 = 4+128      10000100

Mantisa es 1,000001 como no ponemos el 1,  queda 000001 y esto va recostado a la izquierda rellenando con ceros  a la derecha hasta completar los 23 bits.

S E M

0 10000100 00000100000000000000000

Esta tira de 32 bits representa mi número.

Ejemplo inverso.

Qué número representa, en IEEE 754, la tira:

1 00000001 11 00…0000

Signo –

Exponente es e tal que 127+e=1 por tanto e=-126

Mantisa es 1,1100….0000=1,11

Entonces el número representado por esa tira de de 32 bits es:

-1,11 x 2**(-126).

La precisión en el punto flotante es VARIABLE.

Cerca del cero, los números están muy cercanos, y lejos del cero están cada vez más alejados.

Todo esto conlleva una necesaria manipulación del error de representación que escapa a nuestro curso.

Ejercicio:

Representar en IEEE 754 de precisión simple, el número -65540,2d

65540=65536 + 4 =  10000000000000100

65540,2d=10000000000000100,0011b=1,00000000000001000011 x 2**16

S=1

E… 16+127=15+128 …… 10001111

M….. 00000000000001000011001

Y por tanto el número queda:

1 10001111 00000000000001000011001

Hay pérdida de precisión, pues cortamos los dígitos decimales.

Para saber cuánta, habría que deshacer el número en punto flotante verde, tomar ese número y restarlo, en valor absoluto, de 65540,2.

El representado es 1,00000000000001000011001 x 2**16

El número original es 1,00000000000001000011001100… x 2**16

La diferencia entre ambos es 0,000000000000000000000001001100… x 2**16=

=00000000000000000,00000001001100…

El error cometido lo podemos acotar por  0,0000001 = 2**(-6)=1/64=0,015625d que ojo, no es tan chico….

Ejercicio

Indicar a qué número corresponde, en IEEE 754 de precisión simple, la tira:

0 11100000 11100…..00000

Signo +

Exponente

11100000b=32+64+128=96+128

96+128=127+e

exponente=97

Mantisa = 1,111b

Número = +1,111b x 2**97=(1+1/2+1/4+1/8)x2**97d

La primer representación de punto fijo, parece muy básica… pero controla mejor el error.

En punto flotante, al alejarnos de cero, aparece una pérdida drástica en la precisión… atentos a eso.

En el punto fijo está más controlada.

En la práctica siempre usamos punto flotante pero el tema de la precisión no se debe olvidar.

El punto flotante nos da la flexibilidad de , sobre el mismo tipo de datos (float, doublé, etc) trabajar con números o muy grandes o muy chicos. OJO al mezclarlos.

Dudas:

Representar el 12d = 1100b

Si queremos representarlo en m y s sobre 4 bits. No es representable, y el rango era -7..7

Fin de la parte de representación interna.


Estuvimos viendo cómo representar los diferentes tipos de datos, en términos de 0 y 1. El resto de los tipos de datos se resuelve en forma análoga.

Los caracteres, se llevan por medio de una tabla, a una correspondencia biyectiva con los naturales, con lo cual se representa el Natural correspondiente. Esto es por ejemplo la tabla ASCII o el código EBCDIC, etc.

Los strings implican poner uno a continuación de otro, una serie de caracteres. Y se representan poniendo una a continuación de otra, sus respectivas representaciones, con un carácter especial para terminar, o con un largo preanunciado.

Por ejemplo: HOLA…………….. HOLA/0    o si no: 4,HOLA

 

No hay comentarios:

Publicar un comentario

Arquitectura de Sistemas (Microprocesadores I)

  Arquitectura de Sistemas (Microprocesadores I) Ing. Angel Caffa, MSc. MBA angelcaffa@gmail.com Teoría de Arquitectura de Sistemas  © 2026 ...