2010-07-08 2 views
6

Java는 인수를 | ? 예를Java는 인수를 |로 구분하여 어떻게 처리합니까?

출력 내가 SWT/JFace는 위젯 생성자에 사용되는 본 적이

3 

줄 것

private void foo(int i) { 
    System.out.println(i); 
} 

private void bar() { 
    foo(1 | 2 | 1); 
} 

에 대한

. 내가 알 수없는 것은 i의 가치가 어떻게 결정되는지입니다.

+1

| 구분 기호가 아니라 비트 OR 연산자입니다. – Goibniu

+1

저는 실제로 Java에서 비트 연산자를 사용하지 않습니다. 아마도 그 사실을 깨닫지 못했을 것입니다. 지금은 훨씬 더 의미가 있습니다. – Ozsie

답변

8

|은 비트 별 또는 연산자입니다.

foo(1 | 2 | 1); 

인수와 foo를 호출 수단 1 비트 또는 2 비트 또는 1. 이진

  • 1는 이진 01
  • 210

을 OR 0110 진수에서 3 11이다.

| 연산자는 불린에도 사용할 수 있습니다. 첫 번째 피연산자가 true으로 평가되는 경우에도 두 번째 피연산자가 계산된다는 것은 || 연산자와 다릅니다.

실제로 모두 비트 연산자는 xor ^을 포함하여 부울에서도 작동합니다. 그러나 여기에는 해당하는 논리 연산자가 없습니다. ^의 "게으른"평가 방법이 없으므로 중복 될 것입니다.

+1

+1 "두 번째 피연산자가 첫 번째 피연산자가 true로 평가되는 경우에도 두 번째 피연산자가 계산됩니다"라는 사실을 알지 못했습니다. – f1sh

2

bitwise OR operator을 사용하고 있습니다. 처음에는 1 | 1 = 1이므로 두 번째 1은 중복됩니다. 잉여 1을 제거하면 방정식 1 | 2 = 3이 남습니다. 주어진 위치에 대한 하나 또는 모두의 값 하나 (1)가있는 경우

01 | 10 = 11

OR 연산자는 각각의 해당 비트 또는 값을 일치하며 2 비트에서 보면 이진는 같다 결과는 1입니다. 두 비트의 값이 모두 일치하면 결과는 0입니다.

관련 문제