¿Qué función desempeña el ^
operador (caret) en Java?
Cuando intento esto:
int a = 5^n;
...me da:
para n = 5, devuelve 0
para n = 4, devuelve 1
para n = 6, devuelve 3
... así que supongo que no realiza exponenciación. ¿Pero qué es entonces?
java
operators
exponentiation
joroj
fuente
fuente
^
operador no está destinado a la configuración de potencia. Necesitarías en suMath.pow
lugar. Ver la respuesta del poligenel lubricante.^
para exponenciación? ¡Eso es solo sentido común!). La exploración de OP del lenguaje Java necesita ser alentadora.Respuestas:
El operador ^ en Java
^
en Java es el operador exclusivo o ("xor").Tomemos
5^6
como ejemplo:Esta es la tabla de verdad para bitwise ( JLS 15.22.1 ) y lógica ( JLS 15.22.2 ) xor:
Más simplemente, también puedes pensar en xor como "esto o aquello, pero no ambos !".
Ver también
Exponenciación en Java
En cuanto a la exponenciación de enteros, desafortunadamente Java no tiene dicho operador. Puedes usar
double Math.pow(double, double)
(enviar el resultado aint
si es necesario).También puede usar el tradicional truco de desplazamiento de bits para calcular algunas potencias de dos. Es decir,
(1L << k)
son dos para la k -ésima potencia parak=0..63
.Ver también
Esquema de Horner
Para abordar su necesidad específica , en realidad no necesita calcular varios poderes de 10. Puede usar lo que se llama el esquema de Horner , que no solo es simple sino también eficiente.
Como estás haciendo esto como un ejercicio personal, no daré el código Java, pero esta es la idea principal:
Puede parecer complicado al principio, pero realmente no lo es. Básicamente, lee los dígitos de izquierda a derecha y multiplica su resultado hasta ahora por 10 antes de agregar el siguiente dígito.
En forma de tabla:
fuente
Como muchas personas ya han señalado, es el operador XOR . Muchas personas también han señalado que si desea exponenciación, entonces necesita usar Math.pow .
Pero creo que también es útil tener en cuenta que
^
es solo uno de una familia de operadores que se conocen colectivamente como operadores bit a bit:Desde aqui .
Estos operadores pueden ser útiles cuando necesita leer y escribir en números enteros donde los bits individuales deben interpretarse como banderas, o cuando un rango específico de bits en un número entero tiene un significado especial y desea extraer solo esos. Puede hacer gran parte de la programación diaria sin necesidad de usar estos operadores, pero si alguna vez tiene que trabajar con datos a nivel de bits, un buen conocimiento de estos operadores es invaluable.
fuente
Es XOR a nivel de bit, Java no tiene un operador de exponenciación, debería usarlo
Math.pow()
en su lugar.fuente
Regla del operador XOR =>
Representación binaria de 4, 5 y 6:
ahora, realice la operación XOR en 5 y 4:
Similar,
fuente
Es el
XOR
operador bit a bit.fuente
Muchas personas ya han explicado qué es y cómo se puede usar, pero aparte de lo obvio, puedes usar este operador para hacer muchos trucos de programación como
Muchos de estos trucos se pueden hacer utilizando operadores poco sabios, un tema interesante para explorar.
fuente
Como otros han dicho, es XOR bit a bit. Si desea elevar un número a una potencia dada, use
Math.pow(a , b)
, dondea
es un número yb
es la potencia.fuente
Regla del operador XOR
El operador bit a bit trabaja en bits y realiza la operación bit a bit. Suponga que a = 60 yb = 13; ahora en formato binario serán los siguientes:
fuente
El enlace de AraK apunta a la definición de exclusive-or, que explica cómo funciona esta función para dos valores booleanos.
La información que falta es cómo se aplica esto a dos enteros (o valores de tipo entero). Bitwise exclusive-or se aplica a pares de dígitos binarios correspondientes en dos números, y los resultados se vuelven a ensamblar en un resultado entero.
Para usar su ejemplo:
Una manera simple de definir XOR a nivel de bits es decir que el resultado tiene un 1 en cada lugar donde difieren los dos números de entrada.
Con 4 y 5, la única diferencia está en el último lugar; entonces
0101 ^ 0100 = 0001 (5 ^ 4 = 1).
fuente
Puedes usar Math.pow en su lugar:
https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Math.html#pow%28double,%20double%29
fuente
Como ya se indicó en las otras respuestas, es el operador "exclusivo o" (XOR) . Para obtener más información sobre operadores de bits en Java, consulte: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.html
fuente
Es el operador xor de Bitwise en java que resulta 1 para diferentes valores de bit (es decir, 1 ^ 0 = 1) y 0 para el mismo valor de bit (es decir, 0 ^ 0 = 0) cuando se escribe un número en forma binaria.
ex: -
Para usar su ejemplo:
La representación binaria de 5 es 0101. La representación binaria de 4 es 0100.
Una manera simple de definir Bitwise XOR es decir que el resultado tiene un 1 en cada lugar donde difieren los dos números de entrada.
0101 ^ 0100 = 0001 (5 ^ 4 = 1).
fuente
Eso es porque está utilizando el operador xor.
En java, o en cualquier otro idioma, ^ es bit a bit o, por supuesto,
10 ^ 1 = 11. más información sobre operadores bit a bit
Es interesante cómo Java y C # no tienen un operador de energía.
fuente
Es el operador xor bit a bit en java que da como resultado 1 para un valor diferente (es decir, 1 ^ 0 = 1) y 0 para el mismo valor (es decir, 0 ^ 0 = 0).
fuente
^ es binario (como en base-2) xor, no exponenciación (que no está disponible como operador Java). Para la exponenciación, vea java.lang.Math.pow ().
fuente
Es operador XOR. Se utiliza para realizar operaciones de bits en números. Tiene el comportamiento tal que cuando realiza una operación xor en los mismos bits, diga 0 XOR 0/1 XOR 1, el resultado es 0. Pero si alguno de los bits es diferente, entonces el resultado es 1. Entonces, cuando hizo 5 ^ 3, entonces puede mirar estos números 5, 6 en sus formas binarias y, por lo tanto, la expresión se convierte en (101) XOR (110) que da el resultado (011) cuya representación decimal es 3.
fuente
En otros lenguajes como Python puedes hacer 10 ** 2 = 100, pruébalo.
fuente