Sistema decimal y sistema binario
Antes de empezar, quizás sea conveniente tener una noción básica (muy básica) del sistema binario.En nuestra vida cotidiana usamos el sistema decimal, un sistema de numeración compuesto de 10 símbolos ( 0,1,2,3,4,5,6,7,8 y 9 ). Se trata de un sistema de numeración posicional, donde el valor de cada dígito depende de su localización dentro del número, y se calcula usando potencias de 10. Por ejemplo:
El número 542 en notación decimal se puede obtener mediante la operación:
5 x 102 + 4 x 101 + 2 x 100
Es decir, el 2 que ocupa la primera posición se multiplica por la potencia 100 = 1, el 4 que ocupa el segundo lugar se multiplica por su correspondiente potencia 101 = 10 y el 5 que ocupa el tercer lugar se multiplica por 102 = 100. La suma de los tres términos 500 + 40 + 2 es representada por el número o cantidad 542.
En el sistema binario, tenemos sólo dos símbolos en lugar de los 10 del sistema decimal. Estos símbolos son el 0 y el 1. Es el sistema usado por los ordenadores, ya que se corresponde mejor con la realidad del funcionamiento de un ordenador, que trabaja con dos niveles de voltaje, representados con los números 0 y 1.
En el sistema binario, el número 0 se representa por 0, cómo era de suponer, el 1 se representa con el símbolo 1, el 2 se representa en la forma 10, el 3 se representa 11...
No nos vamos a extender mucho definiendo en más profundidad el sistema binario, aunque si podemos realizar una conversión de un número decimal a binario y de binario a decimal:
Decimal a binario
Hay que dividir el número decimal entre 2, nos quedamos con la parte entera del resultado y anotamos el resto. Esta parte entera la volvemos a dividir entre 2, anotando también el resto y quedándonos con la parte entera del resultado... realizamos esta operación hasta que el resultado de la división sea 1 o el resultado sea menor que 2. Os pego un ejemplo extraído de la wikipedia:
Vamos a pasar el número 131 a binario
131 dividido entre 2 da 65 y el resto es igual a 1 65 dividido entre 2 da 32 y el resto es igual a 1 32 dividido entre 2 da 16 y el resto es igual a 0 16 dividido entre 2 da 8 y el resto es igual a 0 8 dividido entre 2 da 4 y el resto es igual a 0 4 dividido entre 2 da 2 y el resto es igual a 0 2 dividido entre 2 da 1 y el resto es igual a 0 1 dividido entre 2 da 0 y el resto es igual a 1 -> Ordenamos los restos, del último al primero: 10000011 |
Por lo que el número 131 en binario es 10000011
Si el número de partida tiene decimales, primero pasamos a binario su parte entera y nos quedamos con su parte decimal. Multiplicamos la parte decimal por 2. Si el resultado obtenido es mayor que 1 anotamos 1, y si por el contrario, es menor que 1 anotamos 0, es decir, nos quedamos con la parte entera del resultado y realizamos el proceso hasta que el número se convierta en periódico o la parte entera sea mayor o igual que 2:
0,3125 (decimal) => 0,0101 (binario). Proceso: 0,3125 · 2 = 0,625 => 0 0,625 · 2 = 1,25 => 1 0,25 · 2 = 0,5 => 0 0,5 · 2 = 1 => 1 En orden: 0101 -> 0,0101 (binario) |
Binario a decimal
Para convertir un número en formato binario a decimal, nos centramos en el dígito (bit) situado más a la derecha y numeramos de derecha a izquierda los dígitos, empezando por el 0:
11011011-1-0-1-1-0-16 5 4 3 2 1 0Hecha esta operación, multiplicamos cada dígito por 2 elevado al índice según el puesto que ocupa el dígito:1 x 26 + 1 x 25 + 0 x 24 + 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20
=1 x 64 + 1 x 32 + 0 x 16 + 1 x 8 + 1 x 4 + 0 x 2 + 1 x 1=64+32+0+8+4+0+1 = 109Por lo que el número binario 1101101 en formato decimal se representa como 109
Si queréis ampliar esta información, podéis consultar en la wikipedia
Operadores Lógicos
Ahora que ya tenemos una noción básica del sistema binario, entramos a ver los operadores lógicos de C#. Estos operadores son &, ^ y |.Estos operadores en C# se aplican a expresiones del tipo int o bool.
Operador &: se aplica a variables del tipo int o bool y realiza lo que se llama operación AND lógica.
Esta operación en el caso de dos expresiones del tipo bool devuelve true si ambas expresiones tienen el mismo valor y false si no es así:
true & true = true;true & false = false;false & true = false;false & false = true;
Para valores del tipo int, el operador realiza la operación AND comparando bit a bit los dos valores:
7 & 5 = 5 (en decimal)111 & 101 = 101 (en binario)Lo que hace es comparar bit a bit:111101AND___101
Operador |: realiza la operación OR
En el caso de expresiones del tipo bool, devuelve true si al menos una de las expresiones es true:
true | false = true;true | true = true;false | true = true;false | false = false;Para int, la operación OR bit a bit dará como resultado 1 si al menos uno de los bits evaluados es 1:7 | 5 = 7 (en decimal)111 | 101 = 101 (en binario)Lo que hace es comparar bit a bit:111101OR___111
Operador ^: realiza la operacion OR exclusiva.
En el caso de expresiones del tipo bool, devuelve true si exactamente una y sólo una de las expresiones es true:
true ^ false = true;true ^ true = false;false ^ true = true;false ^ false = false;Para int, la operación OR exclusiva bit a bit dará como resultado 1 si y sólo sí uno y sólo uno de los bits evaluados es 1:7 ^ 5 = 2 (en decimal)111 ^ 101 = 101 (en binario)Lo que hace es comparar bit a bit de forma exclusiva:111101OR exclusiva___010
En el siguiente capítulo hablaremos de los operadores lógicos condicionales: && y ||.
<< 1.3 - Operadores I
No hay comentarios:
Publicar un comentario