Javascript, Was macht der Operator ^ (caret)?

78

Ich habe einen Javascript-Code:

<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>

Was bedeutet der ^(Caret-) Operator in Javascript?

Torres
quelle

Antworten:

84

Der ^Operator ist der bitweise XOR-Operator. Verwenden Sie zum Quadrieren eines Werts Math.pow:

var altura2 = Math.pow($('#ddl_altura').attr("value")/100, 2);
Gumbo
quelle
4
In einer Sprache wie Javascript, in der Typen so locker sind, dass sie kaum existieren, bin ich fast überrascht, dass es sogar bitweise Operationen gibt :)
Tenfour
1
Ich kenne die pow-Funktion (der Loreal Web Master scheint nein ...), aber ich konnte den Operator ^ für Javascript nicht finden. Danke für den Link!
Torres
3
Schöner Fang! Ich habe es an meinen spanischen Freund weitergeleitet, der ein wenig geschockt war. Bemerkt, wie zum Beispiel 200cm / 70kg Ihnen einen BMI von unendlich gibt ;-)
Michael
5
Um einen Wert zu quadrieren, multiplizieren Sie ihn mit sich selbst. Es ist auf fast allen Plattformen schneller und genauer.
Stephen Canon
4
Wird in ES7 viel einfacher:2**5 //32
Viney
38

^ führt zum Beispiel exklusives ODER (XOR) durch

6ist 110binär, 3ist 011binär und

6 ^ 3bedeutet 110 XOR 011101 (5).

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

Math.pow (x, 2) berechnet, aber für Quadrate verwenden Sie besser, x*xda Math.pow Logarithmen verwendet und Sie mehr Approximationsfehler erhalten. ( x² ~ exp(2.log(x)))

e2-e4
quelle
War sich der logarithmischen Tatsache nicht bewusst! Vielen Dank! (Es ist also wahrscheinlich auch schneller, nicht wahr?)
Michael
Wahrscheinlich schneller (während mathematische Prozessoren für doubleeinfache Operationen ziemlich schnell sind - das Protokoll ist wahrscheinlich langsamer, wenn eine Optimierung der Taylor-Reihe verwendet wird).
e2-e4
Ich frage mich, warum Math.pow nicht nur x * x verwendet ?!
Jowen
2
@Jowen für x² ... Aber was ist, wenn Sie x ^ 2.123123 berechnen müssen?
e2-e4
5

Dies ist der bitweise XOR-Operator.

Petar Minchev
quelle
2

Es heißt bitweises XOR. Lassen Sie es mich erklären:

Du hast :

Decimal Binary   
0         0
1         01
2         10
3         11

Jetzt wollen wir 3^2=? dann haben wir11^10=?

11
10
---
01
---

so 11^10=01 01in Dezimal ist 1.

Das können wir also sagen 3^2=1;

Shubham Verma
quelle
1

Der bitweise XOR-Operator wird durch ein Caret (^) angezeigt und arbeitet natürlich direkt mit der binären Form von Zahlen. Bitweises XOR unterscheidet sich von bitweisem ODER darin, dass es nur dann 1 zurückgibt, wenn genau ein Bit den Wert 1 hat.

Quelle: http://www.java-samples.com/showtutorial.php?tutorialid=820

Sarfraz
quelle