Números
Ciencias de la Computación III
Diego José Figueroa
Sistemas de numeración
¿Qué sistema de numeración utilizan los humanos?
Sistemas de numeración
¿Qué sistema de numeración usan las computadoras?
Sistemas de numeración
- Base 10
- 10 dígitos (símbolos)
- 0 - 9
- Base 2
- 2 dígitos (símbolos)
- 0, 1
¿Cómo pasamos de otra
base a base 10?
El valor de un número es independiente de la base
Base 2
- Bit
- Dígito binario
- 8 bits forman un char
- 16 bits forman un short
- 32 bits forman un entero
- Siempre tenemos un número finito de bits para representar un valor.
¿Qué implica tener un
número finito de bits?
Cantidad de bits
- Limita la cantidad de valores que se pueden representar.
- Por ejemplo, con 8 bits:
- Número más pequeño: 0000 0000 = 0
- Número más grande: 1111 1111 = 255
- 255 = 2^8 -1
- En general, el valor más grande representable con n bits es:
2^n -1
El círculo numérico
- Es como una recta numérica, cerrada sobre sí misma.
- Toda la matemática de computadora funciona de esta manera, dando vuelta cuando se terminan los bits.
Hexadecimal
- Una forma fácil de representar números binarios.
- 16 dígitos:
- 0 - 9 más A - F
- Usualmente se escribe 0xNUMERO
- Este convenio se cumple en C, Java, MIPS, etc.
-
Ejemplo
- 0x20
0x20 = 2x16^1 + 0x16^0 = 32
Hexadecimal
- ¿Por qué hex es más fácil que binario?
- 1 dígito hex se traduce a 4 dígitos binarios
- Dado que 16 es igual a 2^4
- Esto hace que sea muy fácil pasar de hex a binario, y viceversa.
- Ejemplo
0x3A -> 0011 1010
0xFF -> 1111 1111
0x5B -> 0101 1011
Hexadecimal
- También funciona a la inversa (haciendo grupos de 4, desde la izquierda).
11001010111111101011101010111110
1100 1010 1111 1110 1011 1010 1011 1110
C A F E B A B E
0xCAFEBABE
¿Qué hacemos con números negativos?
- Hasta ahora, sólo podemos representar números positivos.
- Necesitamos alguna forma de representar números negativos.
Signo/Magnitud
- Primera implementación, la más simple.
- Utilizamos el bit más significativo para indicar el signo del número
- Si el bit es 1, es un número negativo.
- Si el bit es 0, es un número positivo.
- El resto de los bits indican la magnitud del número.
- Ejemplo
1000 0011 -> -3
0000 0011 -> 3
Signo/Magnitud
- Veamos cómo queda el círculo numérico
Signo/Magnitud
- Tenemos varios problemas!
- Tenemos 2 ceros! 0 y -0.
- Los números negativos están en sentido contrario!
- Necesitamos otro método...
Sumar o restar un 'offset'
- Bajo este método, a todos los números se les suma un 'offset' implícito.
- A este offset, se le llama bias.
- Con un bias de -3
000 -> -3
011 -> 0
111 -> 4
Bias de -3
Bias
- Primer problema, el 0 está corrido!
- Además, debemos remover el bias para hacer operaciones matemáticas.
Complemento a 1
- Para representar un número negativo:
- Invertimos todos los bits del equivalente positivo.
- Es decir, cambiar 1 por 0, y 0 por 1.
- Para conocer la magnitud del número, se deben invertir los bits de nuevo.
- A esa inversión de bits, se le llama complemento.
- Ejemplo
5 -> 0101
-5 -> 1010
Complemento a 1
Complemento a 1
- De nuevo, tenemos 2 ceros!
- Pero, los negativos están en el orden correcto.
- Cero está en el lugar correcto.
- Los números positivos no se ven afectados.
Complemento a 2
- El complemento a 2 de un número es igual al complemento a 1 del número y sumarle 1.
- A esto se le llama inverso aditivo.
Complemento a 2
Complemento a 2
- Sólo tenemos 1 cero.
- Negativos están en el orden correcto.
- Cero está en el lugar correcto.
- Los números positivos no se ven afectados.
Representemos números
de 8 bits (con complemento a 2)
14 -> 0000 1110
-14 -> 1111 0010
----------------------------------------
0000 1110 // +14
1111 0001 // c1
1111 0010 // +1
¿Funcionará a la inversa?
-14 = 1111 0010
---------------------------------------
1111 0010 // -14
0000 1101 // c1
0000 1110 // +1
= 14
- Por lo que -(-x) = x
08 - Números
By Diego Figueroa
08 - Números
- 767