Gráfica comparativa
Bases para la comparación | Y | && |
---|---|---|
Operador | Es un "Operador de Bitwise". | Es un "operador lógico". |
Evaluación | Evalúa los lados izquierdo y derecho de la expresión. | Sólo evalúa el lado izquierdo de la expresión. |
Opera en | Funciona en "tipo de datos booleano", así como opera en "bits". | Funciona solo en "tipo de datos booleano". |
Utilizar | Se usa para verificar la condición lógica y también se usa para enmascarar ciertos bits, como los bits de paridad. | Se usa solo para verificar la condición lógica. |
Definición de & (Bitwise Y)
Este operador '&' se usa como operador lógico (&) y como operador bit a bit. Funciona tanto en datos booleanos como binarios. Cuando se usa el operador & como un operador & lógico, entonces se traduce en "verdadero" si ambos lados de la expresión de evaluación son verdaderos, de lo contrario, devuelve "falso". Permite al compilador evaluar tanto el lado de la expresión. Es decir, incluso si el lado izquierdo de la expresión resulta falso, evalúa el lado derecho de la expresión.
Nos permite entender esto con un ejemplo.
int a = 4, b = 5; system.out.println ((a == 6) & (b ++ == 6)); system.out.println ("b =" + b); // salida false b = 5
Aquí, al evaluar el lado izquierdo de la expresión (a == 6), el resultado es falso, el operador & luego evalúa el lado derecho de la expresión (b ++ == 6) como resultado, el valor de b se incrementa.
Cuando '&' se usa como un "operador bitwise", primero convierte ambos operandos en forma binaria y luego opera en él usando & operator, bit a bit. Después de la operación, el resultado obtenido se encuentra en forma binaria, que luego se convierte en decimal. Cualquier bit que sea 0 en cualquiera de los operandos da como resultado 0. Si ambos bits de los operandos son 1, entonces el bit resultante es 1. Bitwise y operator se rigen por la misma tabla de verdad que por su operador lógico &.
Veamos la operación bitwise de & operator.
int a a = 3 & 4; // 011 & 100 = 000 system.out.println ("a =" + a); // salida a = 0
Aquí, el valor decimal 3 y 4 se convierten inicialmente en su forma binaria, y luego el operador & bitwise realiza la operación & bit a bit by bit. El resultado obtenido es en forma binaria, que luego se convierte de nuevo en forma decimal.
Definición de && (Cortocircuito AND)
Este operador de && funciona totalmente como un operador lógico. Opera solo en el tipo de datos booleano. También se le llama operador de cortocircuito. Como solo verifica el lado izquierdo de la expresión. Si el lado izquierdo de la expresión da como resultado falso, entonces no se preocupa por evaluar el lado derecho de la expresión.
Nos permite entender el funcionamiento del operador && con un ejemplo.
int a = 4, b = 5; system.out.println ((a == 6) && (b ++ == 6)); system.out.println ("b =" + b); // salida false b = 4
Aquí, como la condición (a == 6) es falsa, el operador && no evalúa la expresión (b ++ == 6) como resultado, el valor de b no aumenta.
Diferencias clave entre & y &&&
- El operador & es tanto un operador lógico como un bit, ya que opera tanto con valores booleanos como con datos binarios, mientras que el operador && es solo un operador lógico ya que opera solo con un tipo de datos booleano.
- El operador & evalúa el lado de la expresión para obtener el resultado final, mientras que el operador && evalúa solo el lado izquierdo de la expresión y si resulta falso, ni siquiera evalúa el lado derecho de la expresión.
Nota:
Al evaluar el tipo de datos booleano, ambos operadores obtienen el resultado "verdadero" solo si ambos operandos son verdaderos, de lo contrario, devuelve "falso".
Conclusión:
El operador & y &&, ambos se utilizan para evaluar la condición booleana, mientras que, el operador & también se usa para la operación bitwise. Cuando necesitamos evaluar tanto el lado de la expresión que se usa el operador &, de lo contrario, podemos usar el operador &&.