2010-02-24 40 views
14

Mientras lee el Android guide to Notifications, me encontré con este:¿Qué hace el operador | = en Java?

Adición de vibración

Puede alertar al usuario con el patrón de vibración el valor predeterminado o con un patrón de vibración definido por la aplicación.

Para utilizar el patrón por defecto, añadir "DEFAULT_VIBRATE" para el campo por defecto:

notification.defaults |= Notification.DEFAULT_VIBRATE; 

Lo que esto hace es clara: se añade la bandera DEFAULT_VIBRATE a las banderas por defecto del objeto de notificación. Pero, ¿qué hace el operador |= en Java? Parece una "O", pero ¿cómo funciona?

¿Puede dar un ejemplo con números?

Gracias

Respuesta

27

|= es un operador bit a bit-OR-asignación. Toma el valor actual de LHS, bitwise-ors el RHS, y asigna el valor de nuevo al LHS (de manera similar a += con adición).

Por ejemplo:

foo = 32; // 32 =  0b00100000 
bar = 9; // 9 =  0b00001001 
baz = 10; // 10 =  0b00001010 
foo |= bar; // 32 | 9 = 0b00101001 = 41 
      // now foo = 41 
foo |= baz; // 41 | 10 = 0b00101011 = 43 
      // now foo = 43 
+0

muchas gracias, esto es claro y simple – dgraziotin

17

a |= x es a = a | x y | es "bit a bit OR inclusivo"

cuando se planteen, comprobar the official tutorial on operators.

cada operador tiene una forma de asignación:

+=-=*=/=%=&=^=|=<<=>>=>>>=

Dónde a OP= x se traduce a a = a OP x

Y sobre bitwise operations:

0101 (decimal 5) 
OR 0011 (decimal 3) 
= 0111 (decimal 7) 

El bit a bit o pueden ser utilizados en situaciones donde se utilizan un conjunto de bits como banderas; los bits en un solo número binario pueden representar cada uno una variable booleana distinta. Al aplicar la operación OR bit a bit al número junto con un patrón de bits que contiene 1 en algunas posiciones, se obtendrá un nuevo número con esos bits establecidos. Por ejemplo:

+0

Eso es lo que hice, pero no pude encontrar el | formulario =, que parece extraño para mí – dgraziotin

+1

@bodom_lx así, es que hay allí en la página que enlacé – Bozho

+0

no es ... Existe el operador bitwise-inclusive o "|", que yo sé. Lo que no sabía era el formulario "| =". Lo vi hoy por primera vez en mi vida y no parecía obvio para mí y mis compañeros de clase de ciencias de la computación – dgraziotin

1

Este es el bit sabia operador OR. Si es notifications.default 0b00000001 en forma binaria y Notification.DEFAULT_VIBRATE es 0b11000000, entonces el resultado será 0b11000001.

3

Es una notación abreviada para realizar una OR bit a bit y una asignación en una etapa.

x |= y es equivalente a x = x | y

Esto se puede hacer con muchos operadores, por ejemplo:

x += y 
x -= y 
x /= y 
x *= y 
etc. 

Un ejemplo de los números de bit a bit o el uso de ..si cualquiera de los bits se establece en los operandos, el bit se establecerá en el resultado. Por lo tanto, si:

x = 0001 and 
y = 1100 then 
-------- 
r = 1101 
1

En este caso, es una notification.defaultsbit array. Al usar |=, está agregando Notification.DEFAULT_VIBRATE al conjunto de opciones predeterminadas. Dentro Notification, es probable que la presencia de este valor particular será controlada para así:

notification.defaults & Notification.DEFAULT_VIBRATE != 0 // Present 
0

operador binario OR

+0

no es solo_ el bitwise O – Bozho