Sistema Binario

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