ti-enxame.com

Javascript, o que faz o operador ^ (caret)?

Eu tenho algum código javascript:

<script type="text/javascript">
$(document).ready(function(){
  $('#calcular').click(function() {
    var altura2 = ((($('#ddl_altura').attr("value"))/100)^2);
    var peso = $('#ddl_peso').attr("value");
    var resultado = Math.round(parseFloat(peso / altura2)*100)/100;
    if (resultado > 0) {
      $('#resultado').html(resultado);
      $('#imc').show();
    };
  });
});
</script>

O que significa o operador ^ (caret) em Javascript?

59
Torres

O operador ^ é o operador bitwise XOR. Para quadrar um valor, use Math.pow :

var altura2 = Math.pow($('#ddl_altura').attr("value")/100, 2);
67
Gumbo

^ está executando o exclusivo OR (XOR), por exemplo

6 é 110 em binário, 3 é 011 em binário e

6 ^ 3, que significa 110 XOR 011, dá 101 (5).

  110   since 0 ^ 0 => 0
  011         0 ^ 1 => 1
  ---         1 ^ 0 => 1
  101         1 ^ 1 => 0

Math.pow (x, 2) calcula mas para square é melhor usar x*x como Math.pow usa logaritmos e você recebe mais erros de aproximação. (x² ~ exp(2.log(x)))

32
Ring Ø

Este é o operador bitwise XOR.

3
Petar Minchev

O operador bit a bit XOR é indicado Por um acento circunflexo (^) e, é claro, funciona Diretamente na forma binária dos números . Bitwise XOR é diferente de Bit a bit OR em que retorna 1 somente Quando exatamente um bit tem um valor de 1.

Fonte: http://www.Java-samples.com/showtutorial.php?tutorialid=820

2
Sarfraz

É chamado XOR bit a bit. Deixe-me explicar:

Você tem :

Decimal Binary   
0         0
1         01
2         10
3         11

Agora queremos 3^2=? Então temos 11^10=?

11
10
---
01
---

então 11^10=0101 em Decimal é 1.

Então podemos dizer que 3^2=1;

1
Shubham Verma