Que função o ^
operador (circunflexo) serve em Java?
Quando eu tento isso:
int a = 5^n;
... isso me dá:
para n = 5, retorna 0
para n = 4, retorna 1
para n = 6, retorna 3
... então acho que não realiza exponenciação. Mas o que é então?
java
operators
exponentiation
joroj
fonte
fonte
^
operador não se destina ao conjunto de potência. Você precisaria em seuMath.pow
lugar. Veja a resposta do poligenelubricant.^
por exponenciação? Isso é apenas senso comum!). A exploração da linguagem Java pelo OP precisa de incentivo.Respostas:
O operador ^ em Java
^
em Java é o operador exclusivo-ou ("xor").Vamos dar
5^6
como exemplo:Esta é a tabela verdade para bit a bit ( JLS 15.22.1 ) e lógica ( JLS 15.22.2 ) xor:
Mais simplesmente, você também pode pensar em xor como "isto ou aquilo, mas não ambos !".
Veja também
Exponenciação em Java
Quanto à exponenciação de número inteiro, infelizmente o Java não possui esse operador. Você pode usar
double Math.pow(double, double)
(converter o resultado para,int
se necessário).Você também pode usar o truque tradicional de troca de bits para calcular alguns poderes de dois. Ou seja,
(1L << k)
são duas à k- ésima potência parak=0..63
.Veja também
Esquema de Horner
Atendendo a sua necessidade específica , você realmente não precisa calcular vários poderes de 10. Você pode usar o que é chamado de esquema de Horner , que não é apenas simples, mas também eficiente.
Como você está fazendo isso como um exercício pessoal, não darei o código Java, mas aqui está a idéia principal:
Pode parecer complicado no começo, mas realmente não é. Você basicamente lê os dígitos da esquerda para a direita e multiplica seu resultado até agora por 10 antes de adicionar o próximo dígito.
Em forma de tabela:
fonte
Como muitas pessoas já apontaram, é o operador XOR . Muitas pessoas também já apontaram que, se você deseja exponenciação, precisa usar o Math.pow .
Mas acho que também é útil observar que
^
é apenas uma de uma família de operadores conhecidos coletivamente como operadores bit a bit:A partir daqui .
Esses operadores podem ser úteis quando você precisar ler e gravar números inteiros, onde os bits individuais devem ser interpretados como sinalizadores, ou quando um intervalo específico de bits em um número inteiro tiver um significado especial e você desejar extrair apenas esses. Você pode fazer muitas programações diárias sem precisar usar esses operadores, mas se precisar trabalhar com dados no nível de bits, um bom conhecimento desses operadores é inestimável.
fonte
É um XOR bit a bit, o Java não tem um operador de exponenciação, você precisaria usar
Math.pow()
.fonte
Regra do operador XOR =>
Representação binária de 4, 5 e 6:
agora, execute a operação XOR em 5 e 4:
Similarmente,
fonte
É o
XOR
operador bit a bit.fonte
Muitas pessoas já explicaram sobre o que é e como pode ser usado, mas, além do óbvio, você pode usar esse operador para fazer muitos truques de programação, como
Muitos truques desse tipo podem ser feitos usando operadores pouco inteligentes, tópico interessante a ser explorado.
fonte
Como outros já disseram, é um XOR bit a bit. Se você deseja aumentar um número para uma determinada potência, use
Math.pow(a , b)
, ondea
é um número eb
é a potência.fonte
Regra do operador XOR
O operador bit a bit trabalha em bits e executa operação bit a bit. Suponha que a = 60 eb = 13; agora em formato binário, eles serão os seguintes -
fonte
O link do AraK aponta para a definição de exclusive-or, que explica como essa função funciona para dois valores booleanos.
A informação que falta é como isso se aplica a dois números inteiros (ou valores do tipo inteiro). Bitwise exclusivo - ou é aplicado a pares de dígitos binários correspondentes em dois números e os resultados são remontados em um resultado inteiro.
Para usar seu exemplo:
Uma maneira simples de definir o XOR bit a bit é dizer que o resultado tem 1 em todos os lugares onde os dois números de entrada diferem.
Com 4 e 5, a única diferença está em último lugar; tão
0101 ^ 0100 = 0001 (5 ^ 4 = 1).
fonte
Você pode usar Math.pow:
https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Math.html#pow%28double,%20double%29
fonte
Como já declarado pelas outras respostas, é o operador "exclusivo ou" (XOR) . Para obter mais informações sobre operadores de bits em Java, consulte: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.html
fonte
É o operador Bitwise xor em java que resulta em 1 para um valor diferente de bit (ou seja, 1 ^ 0 = 1) e 0 para o mesmo valor de bit (ou seja, 0 ^ 0 = 0) quando um número é escrito em forma binária.
ex: -
Para usar seu exemplo:
A representação binária de 5 é 0101. A representação binária de 4 é 0100.
Uma maneira simples de definir o Bitwise XOR é dizer que o resultado tem 1 em todos os lugares onde os dois números de entrada diferem.
0101 ^ 0100 = 0001 (5 ^ 4 = 1).
fonte
Isso é porque você está usando o operador xor.
Em java, ou em qualquer outro idioma, ^ é bit a bit xor, então é claro,
10 ^ 1 = 11. mais informações sobre operadores bit a bit
É interessante como Java e C # não têm um operador de energia.
fonte
É o operador bit a bit xor em java que resulta em 1 para um valor diferente (ou seja, 1 ^ 0 = 1) e 0 no mesmo valor (ou seja, 0 ^ 0 = 0).
fonte
^ é binário (como na base-2) xor, não exponenciação (que não está disponível como um operador Java). Para exponenciação, consulte java.lang.Math.pow ().
fonte
É operador XOR. É usado para fazer operações de bits em números. Ele tem o comportamento tal que, quando você faz uma operação xor nos mesmos bits, diz 0 XOR 0/1 XOR 1, o resultado é 0. Mas se algum dos bits for diferente, o resultado será 1. Então, quando você fez 5 ^ 3, então você pode olhar para esses números 5, 6 em suas formas binárias e, assim, a expressão se torna (101) XOR (110), que fornece o resultado (011) cuja representação decimal é 3.
fonte
Em outras linguagens como Python, você pode fazer 10 ** 2 = 100, experimente.
fonte