MÓDULO 3
NÚMEROS REALES Y CÓDIGOS
Numero fraccionario decimal a binario: Fácil! pero es más fácil mostrarte que explicarte.
dado 0,6532d empezamos a multiplicar por 2 repetidamente la parte fraccionaria
0,6532*2 = 1,3064
0,3064*2 = 0,6128
0,6128*2 = 1,2256
0,2256*2 = 0,4512
0,4512*2 = 0,9024
0,9024*2 = 1,8048
etc.….. hasta que el resultado de 1,0 o la cantidad de bits a representar, en el ejemplo sería
hasta 1+6 bits decimales → 0,6532d = 0,101001b
Para pasar de binario fraccionario a decimal es igual que normalmente, solo que las posiciones son negativas
de izquierda a derecha ( 2 -n )
10,101001b = 21x1 + 20x0 + 2-1x1 + 2-2x0 + 2-3x1 + 2-4x0 + 2-5x0 + 2-6x1
= 2x1 + 1x0 + 0,5x1 + 0,25x0 + 0,125x1 + 0,0625x0 + 0,03125x0 + 0,015625x1
= 2 + 0 + 0,5 + 0,125 + 0,015625
= 2,640625
Como veras, la parte fraccionaria no es exactamente igual al numero original (0,6532), esto se debe a que la
representación de números en binario es finita, y por lo tanto tiene margen error/aproximación.
PUNTO FIJO con Signo:
Positivos: +SyM,fraccionario
+23,75d → +23 = 010111b 0,75dd = 0,11b → +23,75 = 010111,11b
Negativo: hacemos el Ca2 del positivo
+23,75=010111,11b → luego 010111,11
Ca1 101000,00
+ 1 ← recordá, la 1 suma al digito menor
101000,01 → - 23,75
Punto Flotante (IEEE 754 – Institute of Electrical and Electronics Engineers)
Cuatro formatos:
32 bits – precisión simple (EL QUE NOS INTERESA)
64 bits – precisión doble
>= 43 bits – precisión simple extendida (no muy usada)
80 bits – precisión doble extendida
32 bits
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
s exponente (8 bits) mantisa (23 bits)
h h h h h h h h
Esta es una plantilla, no es necesaria, solo la hice para que lo veas mejor.
Paso a paso:
1) decimal a binario SyM (sea positivo o negativo), fracción decimal
2) correr la coma tantos lugares (n) como sea necesario de tal forma que quede un numero 1,….
3) el número de lugares (n) que se corrió la coma nos da la notación científica 2 n
4) sumarle a n, 127 (es el sesgo por representación de 8 bits, no importa)
5) el signo es 0 ( + ) o 1 ( - )
6) generamos el código y pasar a Hexadecimal el código binario obtenido.
Ejemplo: +23,6640625d
1) paso el decimal a binario → 010111,1110101 x 20 (notación científica)
2) corro la coma hasta que quede 1,… → 01,01111110101 x 2+4 (el 1 no se usa)
3) 2+4(corrí 4 lugares)
4) calculo el exponente con sesgo 127 → +4 + 127 = 131d = 10000011b
5) signo: 0 (+)
6) lleno la plantilla (o sin plantilla) y paso a hexadecimal
32 bits
31 3 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
s exponente (8 bits) mantisa (23 bits)
0 1 0 0 0 0 0 1 1 0 1 1 1 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
4 1 B D 5 0 0 0
nota: la mantisa se completa con 0 cuando hace falta
Resultado: +23,6640625d = 41BD5000h
A la inversa, es similar:
dado un Código hexadecimal (IEEE 754) pasarlo a decimal, se pasa a binario el código H.
C1233333h
Identificas el signo (0 o 1) que es el primer digito, luego los 8 que le siguen te dan un numero que le
restas 127, que será el exponente de comas a correr a la mantisa. Cambias la base de esta ultima y
pones el signo.
32 bits
31 3 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
s exponente (8 bits) mantisa (23 bits)
C 1 2 3 3 3 3 3
1 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1) Identificas el signo: 1 ( - )
2) 10000010b → 130d → 130 - 127 = 3
3) 01000110011001100110011 → agregamos un 1 (acordate del 1 que no se usaba)
1,010,00110011001100110011 → y corremos la coma 3 lugares
1010,00110011001100110011 → pasamos a decimal y es un - 10, 199999809265137 (o casi ,2)
utilidad: https://babbage.cs.qc.cuny.edu/IEEE-754.old/32bit.html
Codificación en ASCII Extendido
Requiere la tablita de códigos ASCII y remplazar cada símbolo por su equivalente Hex
https://theasciicode.com.ar/american-standard-code-information-interchange/ascii-codes-table.png
caracter A G U S T I N A !
cod hex 41 47 55 53 54 49 4E 41 21
AGUSTINA! = 4147555354494E4121
Codificación BCD Natural
es convertir cada cifra en un código de bloques de a cuatro
Ej: 1234d = 0001001000110100b
Codificación con paridad:
se agrega 0 o 1 al final del código binario para indicar si se trata de un código de paridad par o impar
Que sea par o impar depende de cuantos 1 tenga el código
Ejemplo:
1011010001011001 →tiene 8 números 1.
si queremos que:
sea par: agregaos un 0
10110100010110010 → 8 números 1 → es par
sea impar: agregamos un 1
10110100010110011 → 9 números 1 → es impar
Se usa para disminuir errores en trasmisión de datos en comunicaciones. Así, si se espera que llegue
un código paridad par, llega un impar, tiene error y se conoce.
→→→ NOTA: Hacer ejercicios de entrega obligatoria del MODULO 3 ←←←