2011-11-02 27 views
5

tengo una variable en javascrit, inicializado a 0. Lo que me gustaría hacer es esto:cambiar un valor de 0-> 1 o 1-> 0 con sólo operaciones matemáticas

  • si el valor es 0, cámbialo a 1;
  • si el valor es 1, cámbielo a 0;

y evitaré el enunciado condicional (como if/else) para verificar cuál es el valor.

Creo que solo lo hago con algunas operaciones matematicas; Pensé para una operación de NO, pero no sé cómo hacer que el funcionamiento sin

+0

** ¿Por qué ** quieres evitar if/else? ¿Cualquier razón? –

+0

No hay una razón específica. Solo creo que hay una manera más rápida de cambiar un valor de 0-> 1 o 1-> 0, sin primero verificar y luego establecer el valor ... – markzzz

+0

¿Por "rápido" te refieres al rendimiento del código? Si es así, está buscando el extremo equivocado: su micro-optimización y probablemente * lo está haciendo en el lado equivocado del código. Asegúrese de ** medir ** antes de intentar optimizar. –

Respuesta

22
x = 1-x; 
3

puede utilizar el operador XOR:

x = x XOR 1; 
2

Si la variable es digamos i

i = 1 - i, debe hacer el truco

si i = 0, 1 - 0 = 1 i = 1 a

si i = 1, 1 - 1 = 0 que i = 0

0

Aquí es otra notación, también cambia verdadero, falso a 1, 0.

x = +x; 

Si desea cambiar el valor

x = +!x; 
0

sintaxis XOR corta:

x ^= 1 

Swaps 0 a 1 y de 1 a 0.

Cuestiones relacionadas