Operadores de bits

Operaciones bit a bit

Para poder entender como funcionan las operaciones bit a bit, debemos conocer el comportamiento de los números booleanos y la aritmética booleana. Aunque este tipo de consulta no se suele utilizar, un experto que se precie necesitará incluirlas en su repertorio.

Operadores bit a bit.

El sistema de números que solemos utilizar es el decimal que consta de diez dígitos, que van desde el cero al nueve. En cambio, en informática resulta más útil trabajar en números binarios, un sistema basado en dos dígitos, cero y uno. Estos estados representan los dos estados de conexión electrica, con carga o sin carga.

El sistema binario las columnas aumentan su tamaño en potencias de dos.

Por ejemplo para pasar el binario anterior al sistema decimal:

(1 * 64) + (1 * 32) + (1 * 16) + (1 * 8) + (1 * 4) + (1 * 2) + (1 * 1) = 127

O lo que es lo mismo:

64 + 32 + 16 + 8 + 4 + 2 + 1 = 127

En resumen y para hacerlo más fácil solo debemos sumar el bit encendido (1):

Convertiremos el binario de arriba en decimal:

(1 * 32) + (1 * 8) + (1 * 1)= 41

32 + 8 + 1 = 41

Vemos que la conversión de binario a decimal es muy sencilla. Convertir los números decimales a binarios tambien es muy sencillo, por ejemplo vamos a convertir el número 18 al sistema binario:

Buscamos en nuestra tabla una equivalencia igual o menor que contenga nuestro número decimal y empezando por la izquierda:

Al ser el número 64 mayor que 18 no entra en nuestro cálculo por lo que colocamos un cero, igualmente en la casilla 32 como es tambien mayor que 18 colocamos otro cero. La casilla 16 es menor que nuestro número (18) por lo que colocamos el bit encendido (1), el siguiente paso es restar nuestro número del número de la casilla “18 – 16 = 2“; seguimos recorriendo nuestra tabla buscando un bit que sea igual o menro que el resultado de nuestro número (2).

Seguimos el recorrido hacia la derecha y el 8 es mayor que nuestro número (2) con lo que le escribimos un cero, igual que con la casilla 4 que tambien es mayor que nuestro número, la casilla dos cumple el requisito de nuestro número ya que es igual a 2 por lo que ponemos un 1; como 2 – 2 = 0, ese cero va a la siguiente casilla debajo del 1.

Si queremos representar números más grandes solo debemos colocar más casillas a la izquierda para representar por ejemplo 190 o 230.

¿Eres capaz de convertir el 190 decimal en binario? ¿y el 230 ? Lo dejo en tus manos.

Al lio, veamos dos número, el 9 y el 7 por ejemplo, en el sistema binario equivale a 1001 y 111, respectivamente. Los operadores bti a bit operan sobre los bits individuales del número binario que componen dichos números.

Operacion and

En una operación de bit and, ambos bits deben ser 1 para que el resultado sea 1 (igual que que una operación and ordinaria).

En la tabla de arriba vemos el resultado que desglosamos a continuación:

Comenzando por la izquierda, 1 and 0 es o, de modo que la columna de la izquierda es 0. Nos movemos hacia la derecha y vemos que 0 and 1 es 0 y el la siguiente lo mismo 0 and 1 es 0, la última columna 1 and 1 es 1. por lo tanto el resultado seria 1.

Un operador de bit AND da el mismo resultado independientemente de la forma en la que se distribuyan sus elementos, o sea que, 9&7 es lo mismo que 7&9.

Operación or

El caso de un operador de bit or, basta con que un solo bit sea 1 para que el resultado sea 1.

Todas las columnas contienen al menos un 1 de manera que el resultado será ‘1111‘ equivalente a 15 el sisyema decimal.

Operador <<

Es el operador de desplazamiento hacia la izquierda; a << b, significa que los bits de a se desplazan a la izquierda en función de las columnas b. Por ejemplo 2 << 1; en binario 2 es igual a 10. Desplazando esta cifra hacia la izquierda 1 bit, obtenemos 100, que equivale a 4 en decimal.

Otro ejemplo:

El resultado 240 lo podemos sacar como digimos anteriormente sumando solamente los bits encendidos “1“:

128 + 64 + 32 + 16 = 240

Las operaciones de bits se realizan como bigint, lo que significa que tiene un límite de 64 bits. Si realizamos un desplazamiento más allá de 64 bits o utilizamos un número negativo, obtendremos un 0. Por ejemplo:

Operador >>

Igual que el operador anterior, pero el desplazamiento lo hace hacia la derecha.

Los desplazamientos más allá de las columnas de los unos se pierden; los desplazamientos con números negativos devuelven 0.

  • Hemos ojeado la tabla de los operadores bit a bit.
  • Aprendimos a leer los números binarios, pasar de binario a decimal y viceversa.
  • Aprendimos los operadores and, or, <<, >>.