Що робить символ ^ (каретка) у JavaScript?


78

У мене є код 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>

Що означає ^символ (каретка) у JavaScript?

Відповіді:


84

^Оператор є оператором побітовое виключає АБО . Для квадратного значення використовуйте Math.pow:

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

4
такою мовою, як Javascript, де типи настільки вільні, що вони ледве існують, я майже здивований, що існують навіть побітові операції :)
tenfour

1
Я знаю функцію pow (Loreal Web Master, здається, ні ...), але я не зміг знайти оператор ^ для javascript. Дякую за посилання!
Торрес,

3
Хороший улов! Переслав його моєму іспанському другові, який був трохи шокований. Помітили, як, наприклад, 200 см / 70 кг дає вам ІМТ нескінченності ;-)
Майкл

5
Щоб додати значення до квадрата, помножте його на себе. Це швидше та точніше майже на всіх платформах.
Стівен Канон

4
Стає набагато простіше в ES7:2**5 //32
Viney

38

^ наприклад, виконує ексклюзивне АБО (XOR)

6є 110в двійковому, 3є 011в двійковому і

6 ^ 3, значення 110 XOR 011дає 101 (5).

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

Math.pow (x, 2) обчислює, але для квадрата краще використовувати, x*xоскільки Math.pow використовує логарифми, і ви отримуєте більше помилок наближення. ( x² ~ exp(2.log(x)))


Не знав факту логарифму! Дякую! (Таким чином, це, мабуть, також швидше, чи не так?)
Майкл

Швидше за все, це буде швидше (тоді як математичні процесори досить швидкі для doubleпростих операцій - журнал, швидше за все, буде повільнішим, при цьому використовується оптимізація серії Тейлора).
e2-e4

Цікаво, чому Math.pow не просто використовує x * x?!
Джоуен

2
@Jowen для x² ... Але що, якщо потрібно обчислити x ^ 2.123123?
e2-e4,


3

Його називають побітовим XOR. Дозвольте пояснити:

Ти маєш :

Decimal Binary   
0         0
1         01
2         10
3         11

Тепер ми хочемо 3^2=? тоді маємо11^10=?

11
10
---
01
---

так 11^10=01 01у десятковій є 1.

Тож ми можемо це сказати 3^2=1;


1

Побітовий оператор XOR позначається символом введення (^) і, звичайно, працює безпосередньо над двійковою формою чисел. Побітове XOR відрізняється від побітового АБО тим, що повертає 1 лише тоді, коли рівно один біт має значення 1.

Джерело: http://www.java-samples.com/showtutorial.php?tutorialid=820

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.