2011-11-02 33 views
5

Tôi có một biến trên javascrit, khởi tạo tại 0. Những gì tôi muốn làm là thế này:Thay đổi một giá trị từ 0-> 1 hoặc 1-> 0 với chỉ hoạt động toán học

  • nếu giá trị là 0, đổi thành 1;
  • nếu giá trị bằng 1, hãy đổi thành 0;

và tôi sẽ tránh câu lệnh có điều kiện (như if/else) để kiểm tra giá trị là gì.

Tôi nghĩ rằng tôi chỉ làm điều đó với một số hoạt động báo hiệu; Tôi nghĩ đến một hoạt động không, nhưng tôi không biết làm thế nào để thực hiện hành động mà không

+0

** Tại sao ** bạn muốn tránh nếu/người nào khác? Có lý do gì không? –

+0

Không có lý do cụ thể. Chỉ cần tôi nghĩ rằng có một cách nhanh hơn để thay đổi một giá trị từ 0-> 1 hoặc 1-> 0, mà không kiểm tra đầu tiên và hơn đặt giá trị ... – markzzz

+0

Bởi "nhanh" bạn có nghĩa là hiệu suất của mã? Nếu vậy, bạn đang nhìn vào kết thúc sai: vi tối ưu hóa của bạn và bạn * có thể * làm điều đó ở phía bên trái của mã. Hãy chắc chắn rằng bạn ** đo lường ** trước khi bạn cố gắng tối ưu hóa. –

Trả lời

22
x = 1-x; 
3

bạn có thể sử dụng toán tử xor:

x = x XOR 1; 
2

Nếu biến là chúng ta hãy nói rằng tôi

i = 1 - i, nên làm các trick

nếu i = 0, 1 - 0 = 1 so với i = 1

nếu i = 1, 1-1 = 0 so với i = 0

0

Đây là ký hiệu khác, nó cũng thay đổi đúng, sai đến 1, 0.

x = +x; 

Nếu bạn muốn chuyển đổi các giá trị

x = +!x; 
0

cú pháp XOR viết tắt:

x ^= 1 

Hoán đổi 0-1 và 1 đến 0.

Các vấn đề liên quan