
En programación se debe entender cómo se representan datos en un computador, y así poder tener claridad de restricciones, almacenamiento, y otras características difusas que a veces se vuelven de interés cuando se va a diseñar software.
Estudiar los sistemas numéricos no solo te da información sobre representación de datos, sino que también te puede dar ideas útiles adicionales al momento de plantear estrategias de solución algorítmica.
Los sistemas numéricos que se explican se basan en la posición de los dígitos, y varios sistemas usados en el computador aprovechan esta característica para representar sus datos.
Estudiar los sistemas numéricos no solo te da información sobre representación de datos, sino que también te puede dar ideas útiles adicionales al momento de plantear estrategias de solución algorítmica.
Los sistemas numéricos que se explican se basan en la posición de los dígitos, y varios sistemas usados en el computador aprovechan esta característica para representar sus datos.
POTENCIAS POSICIONALES
Todo número se puede representar en algún sistema numérico usando lo que se conoce como sistemas numéricos posicionales.
Por ejemplo, cuando usted escribe un número, lo hace usando un sistema posicional en base 10: 10 dígitos comenzando con el 0 y finalizando con el 9, donde cada uno de los dígitos ocupa una posición, y toma su valor de unidades o: (10 elevado a la potencia 0), decenas (10 elevado a la potencia 1), centenas (10 elevado a la potencia 2) y así sucesivamente, según sea su posición dentro del número, comenzando desde la derecha, y moviéndonos a la izquierda.
Las cantidades pueden ser representadas en cualquier sistema, y sólo necesita contar con suficientes símbolos para representar cada una de las distintas potencias. Si no fuera 10 la base, sino, por ejemplo, 20, necesitarías 20 dígitos; pero como sólo tienes de 0 a 9, podrás usar letras, A a la J. En este caso la base sería 20: 20 elevado a la potencia cero para las unidades, 20 elevado a la potencia 1 para las veintenas, 20 elevado a la potencia 2, 20 elevado a la potencia 3, y así sucesivamente hasta 20 elevado a la potencia A.
Decir que elevo un número a la potencia A, es decir que elevo un número a la potencia 10, y decir que elevo un número a la potencia J, es decir que elevo un número a la potencia 19.
Como se ve, sólo necesito contar un símbolo válido para representar cualquier sistema, pero dado que cuando uso letras puedo contar con las mayúsculas y las minúsculas, se debe indicar si esto representa un cambio en el tipo de potencia.
¿Pero qué pasa con sistemas que superen los símbolos con los que cuenten?
En realidad, es extraño requerir la representación en sistemas de bases muy complejas. Un ejemplo de representación se da con lenguaje Python, que permite sistemas hasta que se terminen las letras, por lo que la letra Z indica para Python el fin de las transformaciones de sistemas numéricos hacia los enteros.
Note los posibles 36 dígitos 0123456789 ABCDEFGHIJ KLMNOPQRST UVWXYZ. La letra Z, en este caso sería el exponente 36, por lo que esa sería la base máxima. Sistemas más complejos, entones pueden ser armados usando otros símbolos, por lo que la potencial representación de números en otros sistemas escapa a la imaginación, ya que sólo se requeriría de un símbolo para un dígito único. Suponga un sistema en base 50. Una opción sería usar letras los dígitos, las letras mayúsculas y luego las minúsculas, o usar otro tipo de abecedario como el griego, por ejemplo:
0123456789 ABCDEFGHIJ KLMNOPQRS TUVWXYZαβγ δεφγηιξκλμ.
El número δεφ20 tendría una equivalencia en otros sistermas como veremos a continuación.
Por ejemplo, cuando usted escribe un número, lo hace usando un sistema posicional en base 10: 10 dígitos comenzando con el 0 y finalizando con el 9, donde cada uno de los dígitos ocupa una posición, y toma su valor de unidades o: (10 elevado a la potencia 0), decenas (10 elevado a la potencia 1), centenas (10 elevado a la potencia 2) y así sucesivamente, según sea su posición dentro del número, comenzando desde la derecha, y moviéndonos a la izquierda.
Las cantidades pueden ser representadas en cualquier sistema, y sólo necesita contar con suficientes símbolos para representar cada una de las distintas potencias. Si no fuera 10 la base, sino, por ejemplo, 20, necesitarías 20 dígitos; pero como sólo tienes de 0 a 9, podrás usar letras, A a la J. En este caso la base sería 20: 20 elevado a la potencia cero para las unidades, 20 elevado a la potencia 1 para las veintenas, 20 elevado a la potencia 2, 20 elevado a la potencia 3, y así sucesivamente hasta 20 elevado a la potencia A.
Decir que elevo un número a la potencia A, es decir que elevo un número a la potencia 10, y decir que elevo un número a la potencia J, es decir que elevo un número a la potencia 19.
Como se ve, sólo necesito contar un símbolo válido para representar cualquier sistema, pero dado que cuando uso letras puedo contar con las mayúsculas y las minúsculas, se debe indicar si esto representa un cambio en el tipo de potencia.
¿Pero qué pasa con sistemas que superen los símbolos con los que cuenten?
En realidad, es extraño requerir la representación en sistemas de bases muy complejas. Un ejemplo de representación se da con lenguaje Python, que permite sistemas hasta que se terminen las letras, por lo que la letra Z indica para Python el fin de las transformaciones de sistemas numéricos hacia los enteros.
Note los posibles 36 dígitos 0123456789 ABCDEFGHIJ KLMNOPQRST UVWXYZ. La letra Z, en este caso sería el exponente 36, por lo que esa sería la base máxima. Sistemas más complejos, entones pueden ser armados usando otros símbolos, por lo que la potencial representación de números en otros sistemas escapa a la imaginación, ya que sólo se requeriría de un símbolo para un dígito único. Suponga un sistema en base 50. Una opción sería usar letras los dígitos, las letras mayúsculas y luego las minúsculas, o usar otro tipo de abecedario como el griego, por ejemplo:
0123456789 ABCDEFGHIJ KLMNOPQRS TUVWXYZαβγ δεφγηιξκλμ.
El número δεφ20 tendría una equivalencia en otros sistermas como veremos a continuación.
Base 10
Como ejemplo, revisemos la representación del número 124 en sistema decimal 10 (o sistema en base 10), que es el sistema al que estamos acostumbrados. El sistema en base 10 es un sistema posicional. Esto es, se puede expresar como la suma de términos basados en potencias, donde la posición de cada dígito define un valor.
El número 124 se expresa como
1 x 10^2 + 2 x 10^1 + 4 x 10^0 =
1 x 100 + 2 x 10 + 4 x 1 =
100 + 20 + 4 = 124
La base 10 corresponde a la base del sistema, y las potencias a las posiciones de los dígitos. La posición más a la derecha es la de menos valor, y corresponde a la base 10 con potencia 0, o sea, múltiplos de la unidad (10^0 = 1).
A medida que nos movemos hacia la izquierda, vamos incrementando la posición. Por ejemplo, a la izquierda de la base 10 con potencia cero, tendremos la base 10 con potencia 1, o lo que es lo mismo, todos los múltiplos de 10 (10^1 = 10).
El número 124 deberíamos escribirlo como 12410 (124 en base 10), pero, por comodidad, nunca lo hacemos, y se sabe que es en base 10.
El sistema en base 10 solo requiere 10 dígitos: 0,1,2,3,4,5,6, 7,8,9.
El número 124 se expresa como
1 x 10^2 + 2 x 10^1 + 4 x 10^0 =
1 x 100 + 2 x 10 + 4 x 1 =
100 + 20 + 4 = 124
La base 10 corresponde a la base del sistema, y las potencias a las posiciones de los dígitos. La posición más a la derecha es la de menos valor, y corresponde a la base 10 con potencia 0, o sea, múltiplos de la unidad (10^0 = 1).
A medida que nos movemos hacia la izquierda, vamos incrementando la posición. Por ejemplo, a la izquierda de la base 10 con potencia cero, tendremos la base 10 con potencia 1, o lo que es lo mismo, todos los múltiplos de 10 (10^1 = 10).
El número 124 deberíamos escribirlo como 12410 (124 en base 10), pero, por comodidad, nunca lo hacemos, y se sabe que es en base 10.
El sistema en base 10 solo requiere 10 dígitos: 0,1,2,3,4,5,6, 7,8,9.
EJEMPLO.
Expresar el número 1005 como una suma de potencias con base 10. R/ Según nuestro procedimiento, el número 100510 se expande como: 1x10^3 + 0x10^2 + 0x10^1 + 5x10^0 = 1000 + 0 + 0 + 5 = 100510 (1005 base 10) |
No sólo decimales
La suma de potencias posicionales no solo aplica para un sistema base 10. Aplica para cualquier base.
¿Qué pasaría si el número 124 no es en base 10 como estamos acostumbrados?
¿Qué significa el número 12412(en base 12)?
El número 124 en base 12 ya no es mentalmente directo, porque estamos acostumbrados es al de base 10.
Y es que, si pasara que desde niños nos enseñan a trabajar con el sistema en base 12, probablemente el sistema de base 10 sería complicado para nuestros cerebros.
¿Qué pasaría si el número 124 no es en base 10 como estamos acostumbrados?
¿Qué significa el número 12412(en base 12)?
El número 124 en base 12 ya no es mentalmente directo, porque estamos acostumbrados es al de base 10.
Y es que, si pasara que desde niños nos enseñan a trabajar con el sistema en base 12, probablemente el sistema de base 10 sería complicado para nuestros cerebros.
EJEMPLO.
Expresar en forma de suma de potencias, el número 12412 R/ 1x12^2 + 2x12^1 + 4x12^0 = 144 + 21 + 4 = 16910 O sea, 12412 es igual a 16910. que se lee 124 en base 12 igual a 169 en base 10 |
Pero tenemos un problema: si el de base 10 tenía diez dígitos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), ¿el de base 12 dónde tiene los doce dígitos? Necesitaríamos dos más, y por eso se usa cualquier dígito diferente; como no tenemos más dígitos, tradicionalmente se usan letras comenzando desde la A. O sea, en base 12, tendríamos como dígitos del sistema los siguientes: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, A, B.
A y B corresponden al 10 y al 11 (recuerde que en los sistemas posicionales comenzamos con la potencia 0).
Ya podemos entonces escribir números incluyendo la A y la B, pero solo en base 12.
A y B corresponden al 10 y al 11 (recuerde que en los sistemas posicionales comenzamos con la potencia 0).
Ya podemos entonces escribir números incluyendo la A y la B, pero solo en base 12.
EJEMPLO.
Expresar BA123B12 como suma de potencias. R/ Primero hacemos la expansión de suma de potencias. Bx12^5 + Ax12^4 + 1x12^3 + 2x12^2 + 3x12^1 + Bx12^0 Para multiplicar B x 12^5, tenga en cuenta que usamos A y B para representar el número 10 y el 11. La operación quedaría: 11x12^5 + 10x12^4 + 1x12^3 + 2x12^2 + 3x12^1 + 11x12^0 2737152 + 207360 + 1728 + 288 + 36 + 11 = 294657510 Considerando que el resultado es base 10, podemos escribir simplemente 2946575. |
EJEMPLO.
Expresar el número BGGC217 como suma de potencias. R/ Expresamos como suma de potencias. Bx17^4 + Gx17^3 + Gx17^2 + Cx17^1 + 2x17^0 Para multiplicar B x 17^4, tenga en cuenta que en un sistema en base 17, usamos A, B, C, D, E, F y G para expresar los números 10,11,12,13,14,15,16 respectivamente. La operación quedaría: 11x17^4 + 16x17^3 + 16x17^2 + 12x17^1 + 2x17^0 918731 + 78608 + 4624 + 204 + 2 = 100216910 Considerando que el resultado es base 10, podemos escribir simplemente 1002169. |
Sistema Binario
Los computadores tradicionales están compuestos de circuitos, y estos circuitos son transistores. En esa medida, los computadores no pueden sino hablar de que algo tiene, o no tiene voltaje.
Si tiene voltaje, decimos que está On (tradicionalmente 3V o 5V). Si no tiene voltaje, decimos que está Off. (0 Voltios). O sea, los computadores representan todo con dos estados. Los computadores se componen de millones de nanocircuitos, tradicionalmente capaces de estar en alguno de esos dos estados.
Si tiene voltaje, decimos que está On (tradicionalmente 3V o 5V). Si no tiene voltaje, decimos que está Off. (0 Voltios). O sea, los computadores representan todo con dos estados. Los computadores se componen de millones de nanocircuitos, tradicionalmente capaces de estar en alguno de esos dos estados.
Bit
Los computadores actuales hablan en dos posibles estados, y ese sistema de dos estados se le conoce como binario, de modo que solo tiene dos dígitos, 0 y 1. A la unidad que puede estar en estos dos estados se le denomina bit. Lo anterior suena a muy pocos dígitos para representar algo, pero la representación de datos se da es con grupos de bits.
Número binario
Debido a que con un cero o un uno no podemos representar sino dos posibles estados, necesitamos agrupar varios bits para poder representar algo útil. Un número en binario serían solo ceros y unos. Para expresar un número binario como una suma de potencias, usamos exactamente el mismo procedimiento que usamos en los ejemplos base 10 u otras bases.
EJEMPLO.
Expresar 10001012 como una suma de potencias. R/ 1x2^6 + 0x2^5 + 0x2^4 + 0x2^3 + 1x2^2 + 0x2^1 + 1x2^0 = 64 + 0 + 0 + 0 + 4 + 0 + 1 = 6910 Esto es, 1000101 en base 2, equivale al número 69 en base 10. |
Todo número decimal o en cualquier otra base, se puede expresar como un número binario. Suponga la distancia en centímetros a la estrella Alfa Centauro, que es aproximadamente 4131500997376035410. Esta cifra en binario se expresaría internamente en un computador tradicional como:
100100101100011111001000010111010110000010110001011000102.
Más adelante aprenderemos a convertir de una base decimal, a una base binaria.
100100101100011111001000010111010110000010110001011000102.
Más adelante aprenderemos a convertir de una base decimal, a una base binaria.
Nibble
A la agrupación de 4 bits se le denomina Nibble. Tradicionalmente al escribir un número binario, sus bits se agrupan en nibbles de derecha a izquierda para facilitar la lectura.
Si hay menos de 4 bits a los grupos de más a la izquierda, se adicionan bits en cero para contabilizar otro nibble.
Si hay menos de 4 bits a los grupos de más a la izquierda, se adicionan bits en cero para contabilizar otro nibble.
EJEMPLO.
Expresar 10101010012 destacando los nibbles. R/ Tomamos 4 bits para cada nibble. 0010 1010 10012 |
Potencias de 2: los nibbles intuitivos
Así como sabemos qué significa 1, o 12, o 25, es importante que de forma muy empírica identifiquemos lo que significa un nibble pequeño como 00012 o 10002 o 10112.
Como ya vimos, se trata de potencias de 2.
00012 será 2^0 que es 1 decimal
10002 será 2^3 que es 8 decimal
10102 será 2^3 + 2^1 que es 10 decimal
En la medida en que te familiarices con el valor de estas 4 posiciones, más fácil te será leer el contenido de números binarios que pueden ser asociados rápidamente a valores decimales. Simplemente grábate en memoria que las cuatro posiciones de un nibble equivalen, en su orden, a los decimales 8 4 2 1.
Comenzando desde la derecha con el uno, el bit a la izquierda de otro bit siempre es el doble. 2 es el doble de 1, 4 es el doble de 2, 8 el doble de 4, y así sucesivamente.
Veamos un ejemplo.
Si tengo el nibble 00002, inmediatamente veré que se trata del número decimal 010. Si veo 10002, estaré viendo un 8. Si veo 00102, estaré ante un 210.
Las combinaciones de unos será simplemente la suma de los números en esas posiciones. Por ejemplo, el número 11002 es 8+4=1210, mientras que 00112 es 2+1=310, y 10112 es 8+2+1=1110.
Dicho de otro modo, a partir de este momento debemos dominar un nibble, cuyos valores, como se ve, van del 000002 al 11112, o lo que es lo mismo, del 010 al 1510.
También es importante que tu dominio sobre el nibble sea desde la representación decimal a la binaria.
Por ejemplo, partir del número 1210 para armar el binario de forma intuitiva requiere comenzar por el 8 para seguir por el 4, lo que significa usar sus respectivas posiciones binarias con 1 y dejar las demás con ceros, de modo que tendremos 11002.
Otro ejemplo.
Partir del número 1010 para armar el binario de forma intuitiva requiere comenzar por el 8 para seguir por el 2; usamos las respectivas posiciones binarias con 1 y dejamos las demás con ceros, de modo que tendremos 10102.
Dado que ya no necesita una tabla de equivalencias binario a decimal, o decimal a binario, haga el ejercicio de rápidamente ensamblar en su cabeza en binario los números decimales 110, 510, 910, 1310 y 1510.
Garantizo al lector por experiencia personal que dominar el nibble te traerá beneficios a futuro. Más adelante se verá cuando estemos frente al sistema hexadecimal.
En esa misma progresión, dominar el nibble te permitirá entender más rápidamente otros valores binarios más allá del corto nibble. Por ejemplo, ya será más simple entender el valor 100002, ya que se trata de la siguiente potencia en base 2 luego del valor más alto del nibble más alto posible que es el 15. Hasta ahora, las potencias de 2 para un nibble eran 8, 4, 2 y 1.
Del mismo modo, podríamos pensar en las potencias 128, 62, 32, 16, que son las que siguen. Recuerde que sólo necesito conocer el doble del valor decimal del bit más hacia mi derecha para conocer su valor. Pero esperemos a llegar al byte.
Como ya vimos, se trata de potencias de 2.
00012 será 2^0 que es 1 decimal
10002 será 2^3 que es 8 decimal
10102 será 2^3 + 2^1 que es 10 decimal
En la medida en que te familiarices con el valor de estas 4 posiciones, más fácil te será leer el contenido de números binarios que pueden ser asociados rápidamente a valores decimales. Simplemente grábate en memoria que las cuatro posiciones de un nibble equivalen, en su orden, a los decimales 8 4 2 1.
Comenzando desde la derecha con el uno, el bit a la izquierda de otro bit siempre es el doble. 2 es el doble de 1, 4 es el doble de 2, 8 el doble de 4, y así sucesivamente.
Veamos un ejemplo.
Si tengo el nibble 00002, inmediatamente veré que se trata del número decimal 010. Si veo 10002, estaré viendo un 8. Si veo 00102, estaré ante un 210.
Las combinaciones de unos será simplemente la suma de los números en esas posiciones. Por ejemplo, el número 11002 es 8+4=1210, mientras que 00112 es 2+1=310, y 10112 es 8+2+1=1110.
Dicho de otro modo, a partir de este momento debemos dominar un nibble, cuyos valores, como se ve, van del 000002 al 11112, o lo que es lo mismo, del 010 al 1510.
También es importante que tu dominio sobre el nibble sea desde la representación decimal a la binaria.
Por ejemplo, partir del número 1210 para armar el binario de forma intuitiva requiere comenzar por el 8 para seguir por el 4, lo que significa usar sus respectivas posiciones binarias con 1 y dejar las demás con ceros, de modo que tendremos 11002.
Otro ejemplo.
Partir del número 1010 para armar el binario de forma intuitiva requiere comenzar por el 8 para seguir por el 2; usamos las respectivas posiciones binarias con 1 y dejamos las demás con ceros, de modo que tendremos 10102.
Dado que ya no necesita una tabla de equivalencias binario a decimal, o decimal a binario, haga el ejercicio de rápidamente ensamblar en su cabeza en binario los números decimales 110, 510, 910, 1310 y 1510.
Garantizo al lector por experiencia personal que dominar el nibble te traerá beneficios a futuro. Más adelante se verá cuando estemos frente al sistema hexadecimal.
En esa misma progresión, dominar el nibble te permitirá entender más rápidamente otros valores binarios más allá del corto nibble. Por ejemplo, ya será más simple entender el valor 100002, ya que se trata de la siguiente potencia en base 2 luego del valor más alto del nibble más alto posible que es el 15. Hasta ahora, las potencias de 2 para un nibble eran 8, 4, 2 y 1.
Del mismo modo, podríamos pensar en las potencias 128, 62, 32, 16, que son las que siguen. Recuerde que sólo necesito conocer el doble del valor decimal del bit más hacia mi derecha para conocer su valor. Pero esperemos a llegar al byte.
Byte
Dado que la información en un computador se almacena como ceros y unos, hay que establecer alguna estrategia clara de la representación de la información. La estrategia es usar unidades mínimas de almacenamiento de un conjunto de unos y ceros (bits).
La unidad mínima básica de almacenamiento se llama byte, y tradicionalmente se representa con 8 bits (dos nibbles). Esto es, un byte carga 8 bits. Según lo anterior, podemos llenar de ceros y unos esos 8 bits, y el número positivo más bajo posible sería 0000 00002, que corresponde a 010.
El número más alto posible corresponde a 1111 11112 = 255; Esto es, con un byte de 8 bits representamos números entre 0 y 255. El número 255 lo armamos sumando las potencias de 2 de todas las posiciones: 128, 62, 32, 16, 8, 4, 2 y 1.
Dicho esto, si a un nibble cualquiera le antepongo un 1, estoy sumando a todo el nibble el valor de 16.
Retomando la lectura previa con nibbles intuitivos imagine que adiciona un bit adicional, por ejemplo, 101012. Separando en nibbles desde la derecha, tenemos 1 01012, esto es, 16 + 4 + 1 = 2110.
Ahora suponga 2 nibbles: eso es precisamente el concepto de byte. Por ejemplo, 100010002 , será 1000 10002, que corresponde a 128 + 8 = 136. Es por eso por lo que el valor más alto posible para un byte es dos nibbles llenos de unos binarios:
1111 11112 = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 25510.
Entonces, donde hay 0 no sumo. Por ejemplo 1010 10102 = 128 + 32 + 8 + 2 = 17010.
NOTA IMPORTANTE: Si el párrafo anterior fue como haberte dado un golpe con un garrote y no entendiste nada, mi recomendación es que no sigas leyendo adelante y por favor te devuelvas a la sección anterior sobre potencias de 2 y nibbles intuitivos; cuando tus nibbles ya sean intuitivos, retoma la lectura del byte.
La unidad mínima básica de almacenamiento se llama byte, y tradicionalmente se representa con 8 bits (dos nibbles). Esto es, un byte carga 8 bits. Según lo anterior, podemos llenar de ceros y unos esos 8 bits, y el número positivo más bajo posible sería 0000 00002, que corresponde a 010.
El número más alto posible corresponde a 1111 11112 = 255; Esto es, con un byte de 8 bits representamos números entre 0 y 255. El número 255 lo armamos sumando las potencias de 2 de todas las posiciones: 128, 62, 32, 16, 8, 4, 2 y 1.
Dicho esto, si a un nibble cualquiera le antepongo un 1, estoy sumando a todo el nibble el valor de 16.
Retomando la lectura previa con nibbles intuitivos imagine que adiciona un bit adicional, por ejemplo, 101012. Separando en nibbles desde la derecha, tenemos 1 01012, esto es, 16 + 4 + 1 = 2110.
Ahora suponga 2 nibbles: eso es precisamente el concepto de byte. Por ejemplo, 100010002 , será 1000 10002, que corresponde a 128 + 8 = 136. Es por eso por lo que el valor más alto posible para un byte es dos nibbles llenos de unos binarios:
1111 11112 = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 25510.
Entonces, donde hay 0 no sumo. Por ejemplo 1010 10102 = 128 + 32 + 8 + 2 = 17010.
NOTA IMPORTANTE: Si el párrafo anterior fue como haberte dado un golpe con un garrote y no entendiste nada, mi recomendación es que no sigas leyendo adelante y por favor te devuelvas a la sección anterior sobre potencias de 2 y nibbles intuitivos; cuando tus nibbles ya sean intuitivos, retoma la lectura del byte.
CAPACIDAD DE REPRESENTACIÓN NUMÉRICA
Un aspecto interesante de cualquier número binario, es que el valor decimal de un único dígito binario en alguna posición cuando todos los demás dígitos son cero, siempre corresponde al valor decimal menos 1, del número binario cuando todas las posiciones inferiores son el dígito binario 1.
Por ejemplo,
el número 10002 = 810, es lo mismo que 1112 = 710.
el número 100002 es 1610, que es lo mismo que 11112 = 1510.
el número 1000002 es 3210, que es lo mismo que 111112 = 3110.
Y así sucesivamente.
Par saber, entonces, cuál es la capacidad máxima de representación de un conjunto de bits, simplemente averigüe a cuánto equivale el bit de una posición adicional más a la izquierda, y a eso réstele 1.
Otro ejemplo.
Para saber cuál es la capacidad máxima de representación de un número binario de 6 dígitos (1111112), identifique a cuánto equivale el número 10000002.
De este número es fácil saber que se trata del número 2^6 = 64. Restamos 1, y obtenemos que 1111112 = 63.
Note un último ejemplo.
suponga un número de 16 bits lleno de unos 11111111111111112.
Se sabe que el bit más a la derecha es el 2^0, y el bit más a la izquierda es el 2^15.
Para saber a cuanto equivale ese número en decimal, tome la potencia del bit que sigue en la izquierda que es 2^16 y reste 1.
Usando una calculadora, tenemos 65536 – 1 = 65535, que es la capacidad máxima de un número entero de 16 bits.
Por ejemplo,
el número 10002 = 810, es lo mismo que 1112 = 710.
el número 100002 es 1610, que es lo mismo que 11112 = 1510.
el número 1000002 es 3210, que es lo mismo que 111112 = 3110.
Y así sucesivamente.
Par saber, entonces, cuál es la capacidad máxima de representación de un conjunto de bits, simplemente averigüe a cuánto equivale el bit de una posición adicional más a la izquierda, y a eso réstele 1.
Otro ejemplo.
Para saber cuál es la capacidad máxima de representación de un número binario de 6 dígitos (1111112), identifique a cuánto equivale el número 10000002.
De este número es fácil saber que se trata del número 2^6 = 64. Restamos 1, y obtenemos que 1111112 = 63.
Note un último ejemplo.
suponga un número de 16 bits lleno de unos 11111111111111112.
Se sabe que el bit más a la derecha es el 2^0, y el bit más a la izquierda es el 2^15.
Para saber a cuanto equivale ese número en decimal, tome la potencia del bit que sigue en la izquierda que es 2^16 y reste 1.
Usando una calculadora, tenemos 65536 – 1 = 65535, que es la capacidad máxima de un número entero de 16 bits.
Números binarios positivos y negativos
En los casos que venimos revisando, solo hemos representado números positivos.
En el sistema binario también se establecen convenciones de representación para números negativos.
Eso se hace reduciendo la mitad de la capacidad de un binario eliminando el uso del bit más hacia la izquierda, y asignando ese bit al signo: si el bit es 0, el número es positivo, y si el bit es 1, el signo es negativo.
Entonces, para números negativos en un solo byte (8 bits), usamos solo 7 bit para el dato, y un bit para el signo, por lo que 0111 11112 es igual a +127
Note que el uso del signo disminuye el rango de valores posibles: sin signo podemos hablar en el rango 0 a +255, y con signo podemos hablar de valores positivos de hasta 0 a +127. Desafortunadamente se tiene que usar el bit más significativo para decir si el número es positivo o negativo.
Entonces, para expresar un número con signo positivo, sacrificamos el bit más significativo de la izquierda que permanecerá en cero.
En el sistema binario también se establecen convenciones de representación para números negativos.
Eso se hace reduciendo la mitad de la capacidad de un binario eliminando el uso del bit más hacia la izquierda, y asignando ese bit al signo: si el bit es 0, el número es positivo, y si el bit es 1, el signo es negativo.
Entonces, para números negativos en un solo byte (8 bits), usamos solo 7 bit para el dato, y un bit para el signo, por lo que 0111 11112 es igual a +127
Note que el uso del signo disminuye el rango de valores posibles: sin signo podemos hablar en el rango 0 a +255, y con signo podemos hablar de valores positivos de hasta 0 a +127. Desafortunadamente se tiene que usar el bit más significativo para decir si el número es positivo o negativo.
Entonces, para expresar un número con signo positivo, sacrificamos el bit más significativo de la izquierda que permanecerá en cero.
Números binarios negativos
Como en los positivos, se usa el bit más a la izquierda, lo que significa que perdemos un bit de capacidad, pero ganamos la posibilidad de indicar su naturaleza negativa.
Entonces, un bit representa el signo, y los demás bits hay que modificarlos usando una técnica conocida con el nombre Complemento a Dos.
La técnica DE Complemento a Dos, dice:
Entonces, un bit representa el signo, y los demás bits hay que modificarlos usando una técnica conocida con el nombre Complemento a Dos.
La técnica DE Complemento a Dos, dice:
- Comenzar por la derecha (el dígito menos significativo), copiando el número original (de derecha a izquierda) hasta encontrar el primer 1 que también se copia igual.
- Después de haber copiado el primer 1, se niegan (complementan) los dígitos restantes. Es decir, copiar un 0 si aparece un 1, o un 1 si aparece un 0. ("Complemento a dos", 2020)
EJEMPLO.
Use complemento a dos para obtener la representación binaria del número -127. R/ Primero expresamos el número +127 de forma empírica como 0111 11112 = +127 Esta es la capacidad máxima del número positivo cuando se representa en 8 bits con signo, pues no podemos usar el bit más significativo. Luego aplicamos la técnica de complemento a dos. Primero ponemos los bits de la derecha hasta encontrar el primer 1. Lo encontramos inmediatamente y lo dejamos tal cual. Luego invertimos todos los demás incluyendo el del signo, que quedará en 1, indicando que es negativo. 1000 00012 = -127 El número -128 aún es posible, cambiando el 1 de la posición menos significativa de la derecha, por un 0: 1000 00002 = -128 |
EJEMPLO.
Determine el número decimal que corresponde al siguiente número binario con signo: 0110 01112 R/ Dado que se trata de un número positivo, podemos hacer una conversión directa de los bits posicionales: 1x2^6 + 1x2^5 + 0x2^4 + 0x2^3 + 1x2^2 + 1x2^1 + 1x2^0 = 64 + 32 + 0 + 0 + 4 + 2 + 1 = 10310. |
EJEMPLO.
Determine el número decimal con signo que corresponde al número 1110 01112 R/ Dado que se trata de un número negativo, debemos comprender la técnica de complemento a dos para hacerla en reversa, y así obtener el número positivo decimal. Conocido el número positivo, se sabrá cuál es el número negativo buscado, así: (1) busco el primero 1 desde la derecha y lo dejo tal cual. (2) Invertir todos los dígitos a la izquierda. Note que, si luego de la inversión me quedan ceros más hacia la izquierda, son despreciables. El número 1110 01112 queda invertido como: 0001 10012, o lo que es lo mismo, 1 10012 Ahora averiguamos cuál es el número binario: 1x2^4 + 1x2^3 + 0x2^2 + 0x2^1 + 1x2^0 = 16 + 8 + 0 + 0 + 1 = 2510. El número positivo es 25, por lo que el número negativo representado en la secuencia 1110 01112 es el número negativo -25. |
Juntando bytes
Dado que un byte tradicionalmente almacena 8 bits, a medida que necesito números más grandes, necesito más bits, y por lo tanto necesito más bytes. Lo mismo cuenta para las letras. En la medida en que necesito guardar más caracteres, necesito más memoria.
Asumiendo que un caracter en unicode va del código 0 a 1114111, ¿cuántos bits, nibbles y bytes se necesitan para almacenar el valor más grande unicode?
La respuesta es convertir el número 111411110 a número binario, lo que podemos hacer a mano con algún procedimiento empírico, o usando una calculadora moderna.
El equivalente binario del número 111411110 es 0001 0000 1111 1111 1111 11112, lo que da un total de 21 bits. Estos 21 bits se representan en 6 nibbles, para un total de 3 bytes de 8 bits.
Miremos la distancia a la estrella Alpha Centauri, que es aproximadamente de 4131500997376035410 centímetros.
Su representación binaria agrupada en bytes de 8 bits es
00111001 01010110 00001010 01000100 01111001 11000101 01001010 010100102
En binario, podemos guardar en 8 bytes la distancia a la estrella Alfa Centauro.
Asumiendo que un caracter en unicode va del código 0 a 1114111, ¿cuántos bits, nibbles y bytes se necesitan para almacenar el valor más grande unicode?
La respuesta es convertir el número 111411110 a número binario, lo que podemos hacer a mano con algún procedimiento empírico, o usando una calculadora moderna.
El equivalente binario del número 111411110 es 0001 0000 1111 1111 1111 11112, lo que da un total de 21 bits. Estos 21 bits se representan en 6 nibbles, para un total de 3 bytes de 8 bits.
Miremos la distancia a la estrella Alpha Centauri, que es aproximadamente de 4131500997376035410 centímetros.
Su representación binaria agrupada en bytes de 8 bits es
00111001 01010110 00001010 01000100 01111001 11000101 01001010 010100102
En binario, podemos guardar en 8 bytes la distancia a la estrella Alfa Centauro.
Sistema Hexadecimal
Para efectos de escribir en computación números de forma resumida, se acostumbra a usar un sistema posicional denominado hexadecimal, que maneja 16 dígitos. Como ya explicamos, cuando nos pasamos de 10 dígitos, usamos letras, y es por eso que el sistema hexadecimal emplea los 16 dígitos 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.
El sistema hexadecimal es muy cómodo, ya que permite representar con un solo dígito el rango de números decimales 0 al 15 (16 posibles números). Estos es precisamente el rango de números que podemos representar con un nibble, y que en binario corresponde al rango de los números 00002 al 11112. Puede verificar que el número 11112 es 1510 con la expansión posicional 1x2^3 + 1x2^2 + 1x2^1 + 1x2^0 = 8 + 4 + 2 + 1 = 1510.
Lo anterior significa que cualquier grupo de 4 dígitos binarios (nibble), es directamente convertible sin mayor esfuerzo a un dígito hexadecimal.
A continuación se presenta una tabla de números binarios, y su correspondencia con números decimales y hexadecimales.
El sistema hexadecimal es muy cómodo, ya que permite representar con un solo dígito el rango de números decimales 0 al 15 (16 posibles números). Estos es precisamente el rango de números que podemos representar con un nibble, y que en binario corresponde al rango de los números 00002 al 11112. Puede verificar que el número 11112 es 1510 con la expansión posicional 1x2^3 + 1x2^2 + 1x2^1 + 1x2^0 = 8 + 4 + 2 + 1 = 1510.
Lo anterior significa que cualquier grupo de 4 dígitos binarios (nibble), es directamente convertible sin mayor esfuerzo a un dígito hexadecimal.
A continuación se presenta una tabla de números binarios, y su correspondencia con números decimales y hexadecimales.
Tabla de equivalencias binaria, decimal y hexadecimal primeros 15 números decimales.
Bin Dec Hex
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 9 1010 10 A 1011 11 B 1100 12 C 1101 13 D 1110 14 E 1111 15 F |
EJEMPLO DE REPRESENTACIÓN.
Tomemos un número decimal para explicar más. La distancia en centímetros desde el sistema solar a la estrella más cercana Alpha Centauri, es de 41315009973760354 10. Esta distancia puede ser expresada en binario y en hexadecimal respectivamente como: 1001 0010 1100 0111 1100 1000 0101 1101 0110 0000 1011 0001 0110 0010 2 9 2 C 7 C 8 5 D 6 0 B 1 6 2 16 Esto es, la distancia a la estrella Alpha Centauri se escribe en hexadecimal como 92C7C85D60B16216. Como el byte como unidad mínima básica de almacenamiento se representa con 8 bits (dos nibbles), y un dígito hexadecimal ocupa solo 4 bits, entonces en un byte podemos empacar dos dígitos hexadecimales. Es por eso por lo que siempre nos muestran estos números en parejas. La distancia hexadecimal a la estrella Alpha Centauri es entonces 92 C7 C8 5D 60 B1 62 16 y se almacena en 7 bytes (cada byte de 8 bits = 56 bits). |
También en la cultura computacional es normal que te presenten datos enteros, como hexadecimales. Note que cada nibble pasa directamente a un dígito hexadecimal. De ahí su facilidad de uso. Es por esto por lo que se acostumbra en las tablas de caracteres, presentar tanto el código decimal como el hexadecimal, con preferencia por el hexadecimal.
Para la muestra un botón:
el código unicode para el caracter koreano ᇞ es el 457410, pero se prefiere presentar el código en forma hexadecimal como 11DE16.
Para la muestra un botón:
el código unicode para el caracter koreano ᇞ es el 457410, pero se prefiere presentar el código en forma hexadecimal como 11DE16.
CONVERSIONES
La conversión de números entre sistemas numéricos permite que los datos se puedan representar de la forma más conveniente para su legibilidad.
Convertir decimal a binario
El procedimiento es muy simple: divida por dos hasta que se le acabe el número. Esto es, hasta que la división sea 0.
- Todos los residuos formarán parte del número binario,
- Se toma desde el último residuo, hasta el primer residuo, para hacer la composición del número binario.
EJEMPLO.
Convertir el número 1177 a su representación binaria positiva R/ 1177 ÷ 2 = 588 residuo 1 588 ÷ 2 = 294 residuo 0 294 ÷ 2 = 147 residuo 0 147 ÷ 2 = 73 residuo 1 73 ÷ 2 = 36 residuo 1 36 ÷ 2 = 18 residuo 0 18 ÷ 2 = 9 residuo 0 9 ÷ 2 = 4 residuo 1 4 ÷ 2 = 2 residuo 0 2 ÷ 2 = 1 residuo 0 1 ÷ 2 = 0 residuo 1 Para armar el número, Primero buscamos el último residuo que es 1 que será el dígito más a la izquierda, y a continuación escribimos los demás residuos, de abajo para arriba, hasta obtener 100 1001 1001 2 Finalmente tenemos que 117710 = 0100 1001 10012 |
Convertir decimal a hexadecimal
Se sigue la misma estrategia utilizada para la conversión de sistema decimal a binario. Esto es, usamos divisiones sucesivas, y esta vez dividimos es por 16, que es el número de dígitos que tiene la base hexadecimal. Tan pronto la división sea cero, se toman todos los residuos desde el último, hasta el primero.
EJEMPLO.
Convertir el número 117710 a hexadecimal R/ Se procede de la misma forma, esta vez usando 16 como divisor. Dividimos sucesivamente por 16: 1177 ÷ 16 = 73 residuo 9 73 ÷ 16 = 4 residuo 9 4 ÷ 16 = 0 residuo 4 tenemos entonces que el número 49916 equivale al número 111710 |
EJEMPLO.
Convertir el número 898210 a hexadecimal R/ 8982 ÷ 16 = 561 residuo 6 561 ÷ 16 = 35 residuo 1 35 ÷ 16 = 2 residuo 3 2 ÷ 16 = 0 residuo 2 Incluimos todos los residuos en el orden apropiado para obtener 231616 |
EJEMPLO.
Convertir el número 4125610 a hexadecimal R/ 41256 ÷ 16 = 2578 residuo 8 2578 ÷ 16 = 161 residuo 2 161 ÷ 16 = 10 residuo 1 10 ÷ 16 = 0 residuo 10 Se debe recordar que 10 en sistema base 16, es la letra A. Usando los residuos en el orden adecuado obtenenemos A12816 |
Convertir de Hexadecimal a binario
En este caso, la forma más directa y simple es representar cada dígito hexadecimal en su representación binaria. Eso será suficiente.
EJEMPLO.
Convertir el número FEA16 a binario R/ F = 11112 E = 11102 A = 10102 Entonces FEA16 = 11112 11102 10102 = 1111111010102 |
Convertir entre dos bases diferentes
Cuando se trata de dos bases distinta a la decimal, y las bases no están relacionadas matemáticamente como la hexadecimal y la binaria, la recomendación es hacer dos pasos:
- Convertir el número a base 10 usando suma de potencias
- Pasar el decimal a la base destino, usando divisiones sucesivas.
EJEMPLO.
Convertir el número CAFE16 a base 13. R/
12x16^3 + 10x16^2 + 15x16^1 + 14x16^0 = 5196610
51966 ÷ 13 = 3997 residuo 5 3997 ÷ 13 = 307 residuo 6 307 ÷ 13 = 23 residuo 8 23 ÷ 13 = 1 residuo 10 1 ÷ 13 = 0 residuo 1 Debido a que el dígito 10 es A, tenemos que el número es 1A86513. Según lo anterior, CAFE16 equivale a 1A86513 . |
TAMAÑO DE ALMACENAMIENTO
Todo dato que sea representado debe ser almacenado, y los almacenamientos no son infinitos. Hablamos entonces de capacidad de almacenamiento. Estas capacidades se expresan con el Sistema Internacional (SI), o el sistema IEC.
Y así como hablamos de kilómetros, o kilogramos, podemos hablar de kilobytes como medida de almacenamiento, dado que el byte es la medida mínima de ese almacenamiento.
Y así como hablamos de kilómetros, o kilogramos, podemos hablar de kilobytes como medida de almacenamiento, dado que el byte es la medida mínima de ese almacenamiento.
Sistema IEC.
A partir de un byte, podemos hablar de factores de 1024, según la IEC. Esto significa que tendremos las siguientes posibles medidas:
2^0 = 1 byte
2^10 = 1024^1 = 1024 bytes = 1 kibibyte (KiB)
2^20 = 1024^2 = 1024 x 1024 bytes = 1 mebibyte (MiB)
2^30 = 1024^3 = 1024 x 1024 x 1024 bytes = 1 gibibyte (GiB)
2^40 = 1024^4 = 1024 x 1024 x 1024 x 1024 bytes = 1 tebibyte (TiB)
2^50 = 1024^5 = 1024 x 1024 x 1024 x 1024 x 1024 bytes = 1 pebibyte (PiB)
2^60 = 1024^6 = 1024 x 1024 x 1024 x 1024 x 1024 x 1024 bytes = 1 exbibyte (EiB)
2^70 = 1024^7 = 1024 x 1024 x 1024 x 1024 x 1024 x 1024 x 1024 bytes = 1 zebibyte (ZiB)
2^80 = 1024^8 = 1024 x 1024 x 1024 x 1024 x 1024 x 1024 x 1024 x 1024 bytes = 1 yobibyte (YiB)
Note que en el sistema IEC usamos múltiplos de 1024 (2^10).
Como ejemplo, tómese la secuencia genética de la mosca de la fruta, Drosophila melanogaster, que tiene 120 millones de pares de bases. Si dividimos esos 120 millones sobre 1024^1, nos da 117 187.5 KiB (que se lee kibibyte).
De igual forma, usando 2^20 (1024^2), los mismos 120 millones de pares dividido por 2^20, da 114.44 MiB (que se lee mebibytes).
Como otro ejemplo, tome el Genoma humano, que ocupa 3 000 000 000 de pares de bases; esto equivale a 2.79 GiB (que se lee gibibytes).
A partir de un byte, podemos hablar de factores de 1024, según la IEC. Esto significa que tendremos las siguientes posibles medidas:
2^0 = 1 byte
2^10 = 1024^1 = 1024 bytes = 1 kibibyte (KiB)
2^20 = 1024^2 = 1024 x 1024 bytes = 1 mebibyte (MiB)
2^30 = 1024^3 = 1024 x 1024 x 1024 bytes = 1 gibibyte (GiB)
2^40 = 1024^4 = 1024 x 1024 x 1024 x 1024 bytes = 1 tebibyte (TiB)
2^50 = 1024^5 = 1024 x 1024 x 1024 x 1024 x 1024 bytes = 1 pebibyte (PiB)
2^60 = 1024^6 = 1024 x 1024 x 1024 x 1024 x 1024 x 1024 bytes = 1 exbibyte (EiB)
2^70 = 1024^7 = 1024 x 1024 x 1024 x 1024 x 1024 x 1024 x 1024 bytes = 1 zebibyte (ZiB)
2^80 = 1024^8 = 1024 x 1024 x 1024 x 1024 x 1024 x 1024 x 1024 x 1024 bytes = 1 yobibyte (YiB)
Note que en el sistema IEC usamos múltiplos de 1024 (2^10).
Como ejemplo, tómese la secuencia genética de la mosca de la fruta, Drosophila melanogaster, que tiene 120 millones de pares de bases. Si dividimos esos 120 millones sobre 1024^1, nos da 117 187.5 KiB (que se lee kibibyte).
De igual forma, usando 2^20 (1024^2), los mismos 120 millones de pares dividido por 2^20, da 114.44 MiB (que se lee mebibytes).
Como otro ejemplo, tome el Genoma humano, que ocupa 3 000 000 000 de pares de bases; esto equivale a 2.79 GiB (que se lee gibibytes).
Sistema IS (International System Unit).
A partir de un byte, podemos hablar también de factores de 1000, según la IS ("International System of Units", 2020). Comercialmente los vendedores promueven el uso de este sistema en los dispositivos de almacenamiento, a cambio de la EIC. Esto significa que tendremos las siguientes posibles medidas en el sistema SI:
1000^0 = 1 byte
1000^1 = 1000 bytes = 1 kilobyte (KB)
1000^2 = 1000 x 1000 bytes = 1 megabyte (MB)
1000^3 = 1000 x 1000 x 1000 bytes = 1 gigabyte (GB)
1000^4 = 1000 x 1000 x 1000 x 1000 bytes = 1 terabyte (TB)
1000^5 = 1000 x 1000 x 1000 x 1000 x 1000 bytes = 1 petabyte (PB)
1000^6 = 1000 x 1000 x 1000 x 1000 x 1000 x 1000 bytes = 1 exabyte (EB)
1000^7 = 1000 x 1000 x 1000 x 1000 x 1000 x 1000 x 1000 bytes = 1 zettabyte (ZB)
1000^8 = 1000 x 1000 x 1000 x 1000 x 1000 x 1000 x 1000 x 1000 bytes = 1 yottabyte (ZB)
Note que en el sistema IEC usamos múltiplos de 1000.
Los discos duros y las memorias de computadores se expresan casi siempre en el sistema SI en unidades de miles de millones GB (que se lee gigabytes), o en millones de millones, TB (que se lee terabyte). En el caso del genoma humano, el múltiplo no es 1024^3 sino 1000^3 para el caso de GB, por lo que 3 000 000 000 pares de bases son 2.79 GiB (gibibytes), o lo que es lo mismo, 3 GB (gigabytes).
La unidad que sigue al Giga es el Tera, por lo que existirán tebibytes (1024^4) y terabytes (1000^4).
Hoy es posible conseguir dispositivos de almacenamiento de varios terabytes.
Otras unidades superiores en su orden, son los pebibytes (1024^5), exbibytes (1024^6), zebibytes (1024^7) y yobibytes (1024^8), que en el sistema SI corresponde a petabytes (1000^5), exabytes (1000^6), zetabytes (1000^7) y yotabytes(1000^8).
A partir de un byte, podemos hablar también de factores de 1000, según la IS ("International System of Units", 2020). Comercialmente los vendedores promueven el uso de este sistema en los dispositivos de almacenamiento, a cambio de la EIC. Esto significa que tendremos las siguientes posibles medidas en el sistema SI:
1000^0 = 1 byte
1000^1 = 1000 bytes = 1 kilobyte (KB)
1000^2 = 1000 x 1000 bytes = 1 megabyte (MB)
1000^3 = 1000 x 1000 x 1000 bytes = 1 gigabyte (GB)
1000^4 = 1000 x 1000 x 1000 x 1000 bytes = 1 terabyte (TB)
1000^5 = 1000 x 1000 x 1000 x 1000 x 1000 bytes = 1 petabyte (PB)
1000^6 = 1000 x 1000 x 1000 x 1000 x 1000 x 1000 bytes = 1 exabyte (EB)
1000^7 = 1000 x 1000 x 1000 x 1000 x 1000 x 1000 x 1000 bytes = 1 zettabyte (ZB)
1000^8 = 1000 x 1000 x 1000 x 1000 x 1000 x 1000 x 1000 x 1000 bytes = 1 yottabyte (ZB)
Note que en el sistema IEC usamos múltiplos de 1000.
Los discos duros y las memorias de computadores se expresan casi siempre en el sistema SI en unidades de miles de millones GB (que se lee gigabytes), o en millones de millones, TB (que se lee terabyte). En el caso del genoma humano, el múltiplo no es 1024^3 sino 1000^3 para el caso de GB, por lo que 3 000 000 000 pares de bases son 2.79 GiB (gibibytes), o lo que es lo mismo, 3 GB (gigabytes).
La unidad que sigue al Giga es el Tera, por lo que existirán tebibytes (1024^4) y terabytes (1000^4).
Hoy es posible conseguir dispositivos de almacenamiento de varios terabytes.
Otras unidades superiores en su orden, son los pebibytes (1024^5), exbibytes (1024^6), zebibytes (1024^7) y yobibytes (1024^8), que en el sistema SI corresponde a petabytes (1000^5), exabytes (1000^6), zetabytes (1000^7) y yotabytes(1000^8).
TALLER DE SISTEMAS NUMÉRICOS
- Expresar como suma de potencias, y comprobar la suma con calculadora de los números 48910, 78110, 12778210
- Determine cuáles dígitos usaría en sistemas numéricos base 14, base 16, base 8, base 20, base 5, base 2, base 32 y base 50
- Determine la equivalencia base 10 de los números F16, H18, J20, B12, D14, C12, Z239
- Determine la equivalencia base 10 de los números DAGA18, HICE20, BAD12, DDD14, BEBE15
- Exprese como suma de potencias los números FEA16, END31, SEX70
- Exprese como suma de potencias los números 11 11012 y 10 11012
- Determinar la equivalencia base 10 de los números 1100 11002, 1111 0111 11012 y 1 000 00112
- Exprese en binario el número 718410
- Determinar el valor decimal de la expresión (PEPE27 + RAUL32) * 3
- Determinar el valor octal de la expresión DAGA17 / 1012
- Exprese en hexadecimal el número BEBE100
- Convierta a binario sin necesidad de hacer operaciones, el número BADFACE16
- La velocidad de la luz en el vacío es de aproximadamente 300.000 km/s
¿Con cuantos nibbles se puede expresar? - ¿Cuántos números decimales se pueden representar usando un solo nibble sin signo?
- Verifique que el rango de números con un nibble es 0 a (2 ^ número de bits) - 1
- Determine directamente en su cabeza (sin usar lápiz y papel) el valor de 01012 (si esto es difícil para usted, debe volver a repasar lo que significa un sistema posicional, o debe repasar la tabla de multiplicar para el 2. Tambi{en puede serle útil revisar los ejercicios).
- Determine en su cabeza el valor de 11102
- De forma empírica, determine la representación binaria sin signo de los números 4510, 10410, 3810 y 8810
- Asumiendo una representación binaria con signo para dos bytes, determinar la equivalencia base 10 de cada uno de los siguientes números binarios
1111 11012 , 0000 00012, 1000 00112 , 0101 01012 - Suponga que la letra griega ‘θ’ equivale al número binario 11 1011 10002. Determine el número en base 10.
- Suponga que la letra griega ‘π’ equivale al binario 11 1100 00002.
- Determine los números octal, decimal y hexadecimal equivalentes.
- Determine el número de bytes de 8 bits que requiere para almacenar los números 256110, 2650010, 35682010, 142654310
- ¿Cuántos bits se pueden almacenar en 18 bytes?
- ¿Cuántos bits se pueden almacenar en 3840 bytes?
- ¿Cuántos bytes contienen 3840 bits?
- El número decimal 3x10^20 se expresa en binario como
0001 0000 0100 0011 0101 0110 0001 1010 1000 1000 0010 1001 0011 0000 0000 0000 0000 00002. Identifique el número de bytes requeridos para almacenar dicho valor. - Si cada letra de un texto es un caracter que mide exactamente un byte, con cuantos bytes y con cuantos bits almaceno la frase “hasta la vista baby”
- El caracter arábigo '1' (el número uno) tiene código decimal 4910, pero también tiene código hexadecimal 3116. Demuéstrelo.
- Un espacio en blanco (' ') tiene código 3210, o lo que es lo mismo, el código 2016. Demuestre que ambos códigos son equivalentes.
- Exprese en nibbles los números FFFF16 , 71A1F16 , 0092C7C85D60B16216
- Convertir a binario los siguientes números en base 10, usando divisiones sucesivas: 1467210, 3257210, 110110110 y 98765432110
- Convertir a hexadecimal usando divisiones sucesivas los números 5701810, 325721010 y 5295873210
- Convertir a hexadecimal los siguientes números binarios sin signo.
- Identifique de forma directa cada dígito hexadecimal sin tener que usar calculadora: 1110 0101 0011 0010 01102 , 10 1101 1011 1010 11102 , 110 11012 , 100 0000 0011 11102
11 1111 1111 11112 , 11 1011 1101 11102 - Determinar la capacidad en PB y PiB requerida para almacenar 1 código genético humano. Asuma que dicho genoma mide exactamente 3Gb, y que cada letra de la secuencia genética se expresa como un byte.
- Determinar la capacidad en KiB y KB requerida para almacenar 120 códigos genéticos humanos humano asumiendo que todos miden exactamente 3GB. Cada letra de la secuencia se expresa como un byte.
- Determinar la capacidad en terabytes y tebibytes requerida para almacenar 10.000 códigos genéticos humanos. Cada letra de la secuencia se expresa como un byte. ¿Cuántos dispositivos de 3 TiB se requieren para almacenarlos?
- Usted desea tener un sistema numérico con el cual pueda escribir cualquier palabra del español solo en mayúsculas, incluido el caracter espacio.
¿Cuál es la base que debe usar si no maneja tildes?
¿Cuál es la base que debe usar si manejara tildes?
¿Qué número decimal escribió al escribir “raíz”? - Se desea crear un número hexadecimal de control para secuencias genéticas de DNA. Una secuencia de nucleótidos de DNA puede ser convertida a número hexadecimal de la siguiente manera: Cada posición A o T es llevada a 0, y cada posición C o G es llevada a 1. Luego el número binario equivalente es llevado a número hexadecimal sobre la premisa que un byte son 8 bits. El número hexadecimal se almacena con la secuencia genética como control de calidad. Determine el número hexadecimal de control para la secuencia: ACCTATATCGGAAATTACG, y el número de bytes requeridos para almacenarla secuencia sin considerar el número de control.
- Si expresamos los nucleótidos A, U, C y G como los números 0, 1, 2 y 3
¿qué sistema numérico posicional podría usar directamente?
Si usamos dicha base, ¿qué número decimal representa la secuencia de RNA mensajero mRNA=AUGUAUUGG? - ¿Qué número binario representa esa misma secuencia?
- Sin usar calculadora, determine el mayor número entre A FF FD BC 17 y A FF ED BC 17
- Sin usar calculadora ni ninguna técnica de conversión, determine el mayor número entre 0010 0100 10012 y 0010 1000 10012
- El número ‘13’ expresado como secuencia de caracteres, maneja dos caracteres con código: 49 para el ‘1’ y 51 para el ‘3’.
- Exprese la cadena “13” como una secuencia binaria.
- ¿Cuántos bytes se requieren para almacenar la secuencia de caracteres ‘13’?
- Si decide almacenar el número 13 no como secuencia sino como un número entero, ¿Cuántos bytes requeriría?
- Determine la cantidad de bytes mínima requerida para expresar el volumen contenido en 5 silos de 10 metros de alto, y un metro de radio. Puede determinar el volumen de un silo con la fórmula 2.r.π.h. Redondee el resultado final al entero más cercano por encima.
- Los códigos de las letras 'A', 'C', 'G', 'T' son respectivamente 65, 67, 71 y 84.
Asumiendo que cada letra ocupa un byte, escriba la representación binaria para la secuencia GATA. - Determine la representación hexadecimal para la secuencia binaria anterior.
- Para efectos de escribir números enteros en forma muy resumida, se decidió manejar un sistema en base 32.
¿Qué dígitos usaría para expresar números en dicho sistema?
Exprese la distancia a la luna de 384400 kilómetros en dicho sistema. - En el proyecto The 100000 Genomes[1], se está trabajando para obtener 100000 genes humanos completos. Si cada nucleótido se almacena en un byte ¿Cuántos discos de estado sólido (SSD) de 4 TB se requieren?
- En el proyecto The 100000 Genomes, se está trabajando para obtener 100000 genes humanos completos. Para optimizar el almacenamiento en medio de estado sólido, cada letra se representa como dígito octal 0, 1, 2 y 3. Cuando cada dígito se llevan a binario, tenemos 00, 01, 10, 11. Ahora suponga que 4 pares de dígitos binarios se llevan a un byte.
¿Cuántos discos de estado sólido de 4 TB se requieren?
Compare con el resultado del punto anterior.
[1] https://www.genomicsengland.co.uk/the-100000-genomes-project