2010-02-24 3 views
14

, 나는이 운 좋게 발견 한 :| = 연산자는 Java에서 무엇을합니까? <a href="http://developer.android.com/guide/topics/ui/notifiers/notifications.html" rel="nofollow noreferrer">Android guide to Notifications</a>을 읽는 동안

당신은 기본 진동 패턴 또는 응용 프로그램에 의해 정의 된 진동 패턴을 사용자에게 경고 할 수 진동을

추가.

notification.defaults |= Notification.DEFAULT_VIBRATE; 

무엇이하는 일은 분명하다 :

는 디폴트 필드에 "DEFAULT_VIBRATE"를 추가, 기본 패턴을 사용하도록 알림 개체의 기본 플래그에 DEFAULT_VIBRATE 플래그를 추가합니다. 그러나 Java에서 |= 연산자는 무엇을 수행합니까? "OR"처럼 보이지만 어떻게 작동합니까?

숫자를 사용하여 예제를 제공 할 수 있습니까?

감사

답변

27

|=는 비트 단위 OR 할당 연산자입니다. LHS의 현재 값을 취하고 RHS를 비트 단위로 ORS하고 값을 LHS에 다시 할당합니다 (추가로 +=과 유사한 방식으로).

예를 들어

:

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

대단히 감사합니다. 이것은 명확하고 단순합니다. – dgraziotin

17

a |= xa = a | x이며,

같은 질문이 발생할 때마다

the official tutorial on operators을 확인 |는 "비트 포함 OR"입니다.

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

a OP= xa = a OP x

bitwise operations로 번역 :

각 연산자는 지정 양식을 가지고

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

비트 단위 OR의 비트 플래그 세트로서 사용되는 경우에 사용될 수있다; 단일 2 진수의 비트는 각각 별개의 불 변수를 나타낼 수있다. 일부 위치에서 1을 포함하는 비트 패턴과 함께 비트 OR 연산을 숫자에 적용하면 해당 비트가 설정된 새 숫자가됩니다. 예 :

+0

내가 무슨 짓을했는지 그,하지만 난 찾을 수 없습니다 | 나에게 이상한 모습 = 양식을 – dgraziotin

+1

@bodom_lx 아니라, 그것은 바로 거기에있다 내가 링크 된 페이지에. – Bozho

+0

그렇지 않습니다. 비트 단위 또는 연산자 "|"가 있습니다. 내가 모르는 것은 "| ="형식입니다. 오늘 내 인생에서 처음으로 그것을 보았습니다. 내 컴퓨터 과학 수업 동료 인 – dgraziotin

1

이것은 비트 단위 OR 연산자입니다. notifications.default가 바이너리 형식의 0b00000001이고 Notification.DEFAULT_VIBRATE가 0b11000000이면 결과는 0b11000001이됩니다.

3

한 단계로 비트 OR 및 할당을 수행하는 데 필요한 짧은 표기법입니다.

x |= y 예를 들어, 많은 사업자와 함께 할 수 x = x | y

이하는 것과 같습니다

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

비트 OR 사용하여 숫자의 예 ..두 비트 중 하나가 피연산자에 설정되면 비트는 결과에 설정됩니다. 그래서, 경우 :이 경우

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

, notification.defaultsbit array이다. |=을 사용하면 Notification.DEFAULT_VIBRATE을 기본 옵션 집합에 추가합니다. Notification 내부,이 특정 값의 존재가 너무 좋아 점검 할 가능성이 높습니다 :

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

비트 OR 연산자가

+0

비트가 OR이 아닌 것입니다. – Bozho

관련 문제