2010-09-01 43 views
53

Tôi có một số mã javascript:Javascript, Nhà điều hành^(caret) làm gì?

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

nào ^ (caret) điều hành có ý nghĩa gì trong Javascript?

Trả lời

60

^ operator là toán tử XOR bitwise. Vuông một giá trị, sử dụng Math.pow:

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

bằng một ngôn ngữ như Javascript, nơi các loại rất lỏng lẻo họ hầu như không tồn tại, tôi gần như ngạc nhiên có những hoạt động thậm chí Bitwise :) – tenfour

+1

Tôi biết các chức năng pow (Master Web Loreal dường như không ...) nhưng tôi không thể tìm thấy toán tử^cho javascript. Cảm ơn các liên kết! – Torres

+1

Rất thú vị! Chuyển tiếp nó cho người bạn Tây Ban Nha của tôi, người đã bị sốc một chút. Nhận thấy làm thế nào cho ví dụ 200cm/70kg cung cấp cho bạn một chỉ số BMI vô cùng ;-) – Michael

4

Đây là toán tử XOR bitwise.

1

Các Bitwise XOR điều hành được chỉ định bởi một dấu mũ (^) và, tất nhiên, công trình trực tiếp trên hình thức nhị phân của số. Bitwise XOR là khác nhau từ Bitwise OR ở chỗ nó trả về 1 chỉ khi chính xác một chút có giá trị 1.

Nguồn: http://www.java-samples.com/showtutorial.php?tutorialid=820

29

^ được thực hiện độc quyền OR (XOR), ví dụ

6110 trong hệ nhị phân, 3011 trong hệ nhị phân, và

6^3, có nghĩa là 110 XOR 011 cho 101 (5).

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

Math.pow (x, 2) tính toán nhưng đối với vuông bạn tốt hơn sử dụng x*x như Math.pow sử dụng logarit và bạn nhận được nhiều xấp xỉ lỗi. (x² ~ exp(2.log(x)))

+0

Không nhận thức được thực tế lô-gic! Cảm ơn! (Có lẽ nó cũng nhanh hơn, phải không?) – Michael

+0

Có khả năng nhanh hơn (trong khi các bộ xử lý toán học khá nhanh cho hoạt động đơn giản 'double' - nhật ký có thể chậm hơn, trong khi sử dụng tối ưu hóa chuỗi Taylor). –

+0

Tự hỏi tại sao Math.pow không chỉ sử dụng x * x?! – Jowen

0

XOR được gọi là bitwise của nó. Hãy để tôi giải thích nó:

Bạn có:

Decimal Binary 
0   0 
1   01 
2   10 
3   11 

Bây giờ chúng tôi muốn 3^2=? sau đó chúng tôi có 11^10=?

11 
10 
--- 
01 
--- 

nên 11^10=01 01 trong số thập phân là 1.

Vì vậy, chúng ta có thể nói rằng 3^2=1;