REPRESENTACIÓN DE LA INFORMACIÓN

1. Codificación en binario, octal y hexadecimal
2. Representación de números enteros: signo-magnitud y complemento a 2
3. Representación de números decimales: coma flotante, formato IEEE 754
4. Representación de caracteres: código ASCII, ANSI y Unicode
5. Representación de conjuntos de símbolos
6. Formato de instrucciones
7. Estructura interna de la memoria





1. Codificación en binario, octal y hexadecimal

Decimal: {0,1,...,9}
Binario: {0,1}
Octal:{0,1,…,7}
Hexadecimal:{0,1,…,9 ,A,B,…,F}
Donde A=10,…,F=15

Para pasar de uno a otro:

a) decimal a binario:
Se va dividiendo el número decimal para dos hasta llegar al valor del cociente igual a 1, es decir:
156 /2= 78*2+0
78/2=39*2+0
39/2=19*2+1
19/2=9*2+1
9/2=4*2+1
4/2=2*2+0
2/2=1*2+0
Así se halla el número en binario pero ahora hay que ordenarlo. Para ello se toman los valores de los restos de abajo a arriba pero tomando como primer termino el valor del último cociente de esta forma:

156=10011100


b) binario a decimal:
Se va multiplicando cada número por dos elevado a la posición de la que se encuentra esa cifra de tal forma:
10011100= 1*2^7+0*2^6+0*2^5+1*2^4+
+1*2^3+1*2^2+0*2^1+0*2^0 =156


c) binario a octal:
Se pone el número en binario y se va cogiendo de tres en tres cifras empezando por el final (en el caso de que no salgan grupos de tres exactamente se pondrán al principio tantos ceros como sea necesario, ya que no varía su valor); es decir, se va haciendo lo miso de antes pero en cada grupo de tres:
010-011-100 =
0*2^2+1*2^1+0*2^0= 2
0*2^2+1*2^1+1*2^0=3
1*2^2+0*2^1+0*2^0=4

Por tanto el número binario 010011100 en octal es 234.


d) octal a binario:
Se codifica cada cifra en binario, en grupos de 3 bits, es decir:
234 =
2=010
3=011
4=100
Por lo tanto el número 234 octal en binario es igual a 010011100.



e) binario a hexadecimal:
Es el mismo proceso que en el apartado (c) pero con grupos de 4 bits, es decir:
1001-1100=
1*2^3+0*2^2+0*2^1+1*2^0= 9
1*2^3+1*2^2+0*2^1+0*2^0=12=C
Por lo tanto el número binario 10011100 en hexadecimal es 9C.


f) hexadecimal a binario:
El mismo proceso que el apartado (d) pero en grupos de 4 bits, es decir:
9C=
9=1001
C=1100
Por lo tanto el número hexadecimal 9C en binario es 1001110.




g) Números reales con decimales:

g.1) decimales a binario:
Se va multiplicando la parte decimal por 2 de tal forma que del resultado vas guardando la parte entera, de esta forma:

0.125:
0.125*2=0.250
0.250*2=0.500
0.500*2=1.000
0.000*2=0.000
Por lo tanto el numero decimal 0.125 en binario es 0.001


g.2) binario a decimales:
Se va multiplicando por potencias de 2 pero elevándolas a exponentes negativos, es decir:

0.001: 0*2^(-1)+0*2^(-2) + +1*2^(-3) = 0.125



2. Representación de números enteros: signo-magnitud y complemento a 2

a) Signo-magnitud:

BINARIO XD XR

0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7


1000 8 -0
1001 9 -1
1010 10 -2
1011 11 -3
1100 12 -4
1101 13 -5
1110 14 -6
1111 15 -7

Donde
XD: Valor decimal y XR: Nº que representa

[0,2^(m-1)-1], donde m =4 bits.
[-1,-(2^(m-1)-1)].

Por tanto el rango es: [ -(2^(n-1)-1),2^(n-1)-1] con n bits.
Este sistema no admite todo tipo de sumas sino solamente las de igual signo.

Ejemplo:
1+2=3
1: 0001
2: 0010
La suma da: 0011 que pasado a decimal es igual a tres.


b) Complemento a dos:

BINARIO XD XR

0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7


1000 8 -8
1001 9 -7
1010 10 -6
1011 11 -5
1100 12 -4
1101 13 -3
1110 14 -2
1111 15 -1

Donde
XD: Valor decimal y XR: Nº que representa

[0,2^(m-1)-1], donde m =4 bits.
[-1,-(2^(m-1))].

Por tanto el rango es: [ -2^(n-1),2^(n-1)-1] con n bits.
Este sistema admite sumas entre números con distinto signo.



3. Representación de números decimales: coma flotante en formato IEEE 754

a) Representación en coma fija:

Se hace por separado. Primero se encuentra el número binario de la parte entera y luego el de la parte decimal, es decir:
-6.125:
Signo - es 16: 110 0.125: 0.001
Por lo tanto, el número -6.125 es 1 110.001

b) Representación en coma flotante:

Se hace por separado. Primero se hace el proceso anterior de la coma fija, es decir:
-6.125:
Signo:- es 1
6: 110
0.125: 0.001
Una vez hallado el número en binario se pone de esta forma:

Se corre la coma hasta dejar una cifra entera, que será un 1, y el resto será la parte decimal, multiplicado por la potencia de 2 necesaria, es decir, en el ejemplo 110.001 = 1.10001*2^2. Ahora, la representación se realiza de la forma:
La primera cifra expresa el signo:
1 si es negativo
0 si es positivo
En las ocho siguientes se expresa el exponente que es igual al exponente dado más el número 127, es decir:
Es este caso es 2+127 = 129 que en binario es 10000001.
Y finalmente la mantisa formada por la parte decimal binaria. Luego el numero -6.125 es:
Signo 1 como primer bit
Exponente 10000001 en un total de 8 bits después del signo
Mantisa 10001000 hasta 23 bits totales, colocados al final
1
1
0
0
0
0
0
0
1
1
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0


4. Representación de caracteres: código ASCII, ANSI y Unicode

a) Código ASCII:

Consta desde 1 byte (8bits) es decir, de 2^8 símbolos, entre los cuales están repartidos los siguientes:
De 48-57: representan del 0 al 9
De 65-90: representan las letras mayúsculas de A a Z
De 97-122: representan las letras de la a a la z

Y luego están otros caracteres imprimibles como: *,$ ,%...

b) Código ANSI:
Consta de un byte donde los primeros 128 caracteres son los mismos que el código ASCII pero los 128 números restantes codifica los símbolos en diferente orden que en el código ASCII. El código ANSI lo usa Windows.

c) Unicode:
Consta de 2 bytes (16 bits) y con una capacidad para codificar 2^16=65536 símbolos es capaz de albergar diferentes alfabetos tales como el chino, japonés, etc.



5. Representación de conjuntos de símbolos
Se hace de la siguiente forma:

N símbolos ------- m bits ------- 2^m>=N

Ejemplo de escritura de un texto en binario con el código ASCII:
Msg: “Hello World\n” :
6D-73-67-3A-20-22-48-65-…..



6. Formato de instrucciones
INSTRUCCIONES:
Codificar operaciones --- ADD, SUB, MUL, DIV --- 2 bits
Codificar operandos --- 1 byte por cada operando
Codificar el lugar -- 1 bit si sólo hay 2 lugares

Operación codificación:
ADD 00
SUB 01
MUL 10
DIV 11



6. Estructura interna de la memoria

a) Operaciones sobre la memoria:
.leer
.escribir

b) Tamaño de la memoria:
Un bus de direcciones de 32bits puede direccionar 2^32 palabras(bytes) = 4Gb

c) Almacenamiento de caracteres:
Cadena= string (la dirección es la del primer carácter de la cadena)
el carácter que indica el final de una cadena es : '\0'.

d) Almacenar booleano:
Basta un solo bit para almacenarlo, o en su defecto por ejemplo, el último bit de un byte.

e) Almacenamiento de enteros:
Hay dos formas:
-BIG ENDIAN: la primera parte (más significativa) se almacena en una dirección y la parte menos significativa en la siguiente
-LITTLE ENDIAN: la parte más significativa se almacena en una dirección y la otra en la dirección anterior.

f) Almacenamiento de instrucciones:
El procesador las desmenuza formando un conjunto de acciones a realizar bajo la supervisión de la unidad de control y usando si es preciso hacer algún cálculo la unidad aritmético-lógica.

g) Almacenamiento de direcciones como datos:

Queda almacenada la dirección de un dato, es decir, esa dirección te manda a otra de la memoria que contiene un dato. También se le llama indirección.

La variable que almacena la dirección de memoria se llama puntero


h) Almacenamiento de arrays:

Se trata de una forma estructurada de almacenar varias variables del mismo tipo. En memoria están localizadas de forma correlativa.