Sistema binario
El sistema binario tiene base 2 y se representa por el conjunto {0, 1}
El Sistema Internacional de Unidades y el término byte
En los inicios de la informática, las unidades se mostraban como múltiplos de 1000, pero en los años 60 se empezó a confundir 1000 con 1024, puesto que la memoria de los ordenadores trabajan en base binaria y no decimal
El problema radicó al nombrar estas unidades, ya que se adoptaron los nombres de los prefijos del Sistema Internacional de Unidades
Dada la similitud en las cantidades, se utilizaron los prefijos de base mil que se aplican a las unidades del sistema internacional (tales como el metro, el gramo, el voltio o el amperio)
Sin embargo, etimológicamente es incorrecto utilizar estos prefijos (de base decimal) para nombrar múltiplos en base binaria
Como ocurre en el caso del kilobyte, a pesar de que 1024 se aproxime a 1000
Para clarificar la distinción entre los prefijos decimal y binario, la Comisión Electrotécnica Internacional (IEC), un grupo de estandarización, propuso en 1998 otros prefijos, que consistían en uniones abreviadas del Sistema Internacional de Unidades con la palabra binario
Así pues, un conjunto de 2^{10} bytes (1024 bytes), debería ser denominado un kibibyte 4 (KiB) contracción de Kilobyte Binario
Esta convención, expresada en los estándares IEC 60027-2^5\text{ e }IEC 80000-13:2008, ha sido adoptada para el sistema operativo «Snow Leopard» de Apple y por Ubuntu
Otras, como Microsoft, adoptan la definición que se encuentra en diccionarios como el de Oxford, al mantener el uso de «kilobyte» para 1024 bytes
En el entorno informático se ha sugerido utilizar el prefijo K mayúscula para distinguir la cantidad binaria de la decimal, pero este tema aún no se ha normalizado, ya que el símbolo «K» en el SI representa la unidad de temperatura, el kelvin
Por otro lado, esta sugerencia no se podría extender a otros prefijos de mayor magnitud dado que, en el caso del MB (megabyte), el SI ya utiliza tanto la M mayúscula (mega: millón) como la minúscula (mili: milésima)
Unidades de información (del byte)
Sistema Internacional (decimal) |
ISO/IEC 80000-13 (binario) |
Múltiplo (símbolo) |
SI |
Múltiplo (símbolo) |
ISO/IEC |
kilobyte (kB) |
10^3 |
kibibyte (KiB) |
2^{10} |
megabyte (MB) |
10^6 |
mebibyte (MiB) |
2^{20} |
gigabyte (GB) |
10^9 |
gibibyte (GiB) |
2^{30} |
terabyte (TB) |
10^{12} |
tebibyte (TiB) |
2^{40} |
petabyte (PB) |
10^{15} |
pebibyte (PiB) |
2^{50} |
exabyte (EB) |
10^{18} |
exbibyte (EiB) |
2^{60} |
zettabyte (ZB) |
10^{21} |
zebibyte (ZiB) |
2^{70} |
yottabyte (YB) |
10^{24} |
yobibyte (YiB) |
2^{80} |
Unidades binarias en informática
En las matemáticas puras un valor no tiene un límite de espacio para su representación, sin embargo, las máquinas generalmente trabajan con un número fijo de bits
Bit
La unidad más pequeña de información en una máquina se le llama bit
Con un bit se puede representar solo un valor de dos posibles valores diferentes, ejemplo: cero o uno, falso o verdadero, blanco o negro, abajo o arriba, no o sí, etc
Nibble
Un nibble es una colección de 4 bits
No sería un tipo de dato interesante a excepción de que con un nibble se presenta un número BCD y también que un nibble puede representar un dígito hexadecimal
Byte
Un byte es una colección de 8 bits
Las referencias hacia cierta localidad de memoria en todos los microprocesadores nunca es menor que un byte, (la mayoría usan múltiplos de bytes), por lo tanto, se considera el dato localizable (direccionable) más pequeño
Los bits de un byte normalmente se numeran desde 0 hasta 7
El bit 0 se le llama bit de más bajo orden o menos significativo, el bit 7 se considera el bit de más alto orden o el más significativo
Un byte consta también de 2 nibbles, los bits 0, 1, 2 y 3 forman el llamado nibble de menor orden, y los bits 4, 5, 6 y 7 forman el nibble de mayor orden
Como un byte está formado por dos nibbles, es posible representar cualquier valor con dos dígitos hexadecimales
Palabra
Una palabra es un grupo de 16 bits, el bit 0 es el bit de más bajo orden y el bit 15 es el de más alto orden
Una palabra se puede dividir en 2 bytes llamados igualmente de bajo y alto orden
También una palabra puede considerarse como un grupo de 4 nibbles
Se considera una palabra doble a un grupo de 32 bits
Se considera una palabra cuádruple a un grupo de 64 bits
Los ordenadores modernos normalmente tienen un tamaño de palabra de 16, 32 ó 64 bits
Muchos otros tamaños se han utilizado en el pasado, como 8, 9, 12, 18, 24, 36, 39, 40, 48 y 60 bits
El slab es uno de los ejemplos de uno de los primeros tamaños de palabra
Algunos de los primeros ordenadores eran decimales en vez de binarios, típicamente teniendo un tamaño de palabra de 10 ó 12 dígitos decimales y algunos de los primeros ordenadores no tenían una longitud de palabra fija
Algunas veces, el tamaño de una palabra se define para tener un valor particular por compatibilidad con los ordenadores anteriores
Los microprocesadores utilizados en ordenadores personales (por ejemplo, los Intel Pentium y los AMD Athlon) son un ejemplo
Su arquitectura IA-32 es una extensión del diseño original del Intel 8086 que tenía un tamaño de palabra de 16 bits
Los procesadores IA-32 siguen soportando programas del 8086 (x86), así que el significado de palabra en el contexto IA-32 sigue siendo el mismo y se continua diciendo que son 16 bits, a pesar del hecho de que en la actualidad (el tamaño del operando por defecto es 32 bits) opera más como una máquina con un tamaño de palabra de 32 bits
Similarmente en la nueva arquitectura x86-64, una palabra sigue siendo 16 bits, aunque los operandos de 64 bits (palabra cuádruple) son más comunes
Números enteros
Es posible representar un número finito de números enteros
Por ejemplo, con 8 bits podemos representar 256 objetos diferentes
Si se usara un esquema de números enteros positivos cada uno de éstos objetos se numerarían de 0 a 255
También es posible usar un esquema de números enteros negativos, para este caso se usa el sistema complemento a dos, donde el bit de mayor orden es el bit de signo, si tal bit es cero, el número es positivo, si es uno, el número es negativo
Si el número es positivo es almacenado en su valor binario estándar, si el número es negativo se almacena en su forma complemento a dos
Números reales
La forma en que la arquitectura de computadoras resuelve el problema de representar números reales es por medio de los números de coma flotante
Un número coma flotante se divide en 3 secciones de bits: signo, significante y exponente con signo
Conversiones
Conversión a sistema decimal
La representación binaria de un número decimal (el paso de un número en base 10 a su correspondiente en base 2), se calcula dividiendo sucesivamente el cociente de la división del numero por el divisor 2, hasta obtener un cociente menor a 2
La representación en base 2 será, el último cociente seguido del ultimo resto seguido del resto anterior seguido del resto anterior, y así hasta el primer resto obtenido
Ejemplo: Convertir 3737 a representación binaria
Número |
Cociente |
Resto |
\frac{3737}{2} |
1868 |
1 |
\frac{1868}{2} |
934 |
0 |
\frac{934}{2} |
467 |
0 |
\frac{467}{2} |
233 |
1 |
\frac{233}{2} |
116 |
1 |
\frac{116}{2} |
58 |
0 |
\frac{58}{2} |
29 |
0 |
\frac{29}{2} |
14 |
1 |
\frac{14}{2} |
7 |
0 |
\frac{7}{2} |
3 |
1 |
\frac{3}{2} |
1 |
1 |
Entonces tenemos que:
3737_{(10} = 111010011001_{(2}
Convertir de sistema decimal a binario con decimales
La representación binaria de un número decimal con decimales (el paso de un número en base 10 a su correspondiente en base 2)
Se calcula multiplicando sucesivamente el número (después los resultados) sin su parte entera por 2, hasta obtener un número sin decimales, hasta una cantidad que se repita periódicamente (en el caso de números periódicos)
O hasta un número de dígitos predefinido por la precisión de la máquina
La representación en base 2 será, la parte entera sin modificaciones, después se le añade la coma y por último la parte entera del resultado de las multiplicaciones sucesivas
Ejemplo: Convertir 56,75 a representación binaria con decimales
Número |
Cociente |
Resto |
\frac{56}{2} |
28 |
0 |
\frac{28}{2} |
14 |
0 |
\frac{14}{2} |
7 |
0 |
\frac{7}{2} |
3 |
1 |
\frac{3}{2} |
1 |
1 |
Entonces tenemos que la parte entera es:
56_{(10} = 111000_{(2}
Número |
Resultado |
Parte entera |
0,75 \cdot 2 |
1,5 |
1 |
(1,5 - 1) \cdot 2 |
1 |
1 |
Entonces tenemos que la parte decimal es:
0,75_{(10} = 11_{(2}
Entonces tenemos que:
56,75_{(10} = 111000,11_{(2}
Convertir de sistema binario a decimal
La representación decimal de un número binario, correspondería a aplicar la fórmula:
b_1\cdot 2^{(n - 1)} + \cdots + b_n \cdot 2^0
Donde n seria la longitud de la cadena y b_i el valor correspondiente a la posición i-ésima de la ristra, empezando de izquierda a derecha
Ejemplo: Convertir 111010011001 a representación decimal
111010011001_{(2}= 1 \cdot 2^{11} + 1 \cdot 2^{10} + 1 \cdot 2^9 + 0 \cdot 2^8 + 1 \cdot 2^7 + 0 \cdot 2^6 + 0 \cdot 2^5 + 1 \cdot 2^4 + 1 \cdot 2^3 + 0 \cdot 2^2 + 0 \cdot 2^1 + 1 \cdot 2^0 = 2048 + 1024 + 512 + 0 + 128 + 0 + 0 + 16 + 8 + 0 + 0 + 1 = 3737_{(10}
Entonces tenemos que:
111010011001_{(2}=3737_{(10}
Convertir de sistema binario a decimal con decimales
Si el número tiene además decimales, se expresará con la siguiente fórmula:
b_1\cdot 2^{(n - 1)} + \cdots + b_n \cdot 2^0+b_{n+1}\cdot 2^{-1} + \cdots + b_{n+m} \cdot 2^{-m}
Donde n seria la longitud de la cadena sin decimales, m la longitud de la cadena con decimales, b_i el valor correspondiente a la posición i-ésima de la ristra, empezando de izquierda a derecha
Ejemplo: Convertir 111000,11 a representación decimal
111000,11_{(2}=1 \cdot 2^5 + 1 \cdot 2^4 + 1 \cdot 2^3 + 0 \cdot 2^2 + 0 \cdot 2^1 + 0 \cdot 2^0 + 1 \cdot 2^{-1} + 1 \cdot 2^{-2} = 32 + 16 + 8 + 0 + 0 + 0 + 0 + 0,5 + 0,25 = 56,75(10
Entonces tenemos que:
111000,11_{(2}=56,75(10