Java/Java의 정석

[Java의 정석] 3.5.2 비트 연산자 & | ^ ~ << >>

Dev_Green 2022. 11. 30. 21:40

비트 연산자 & | ^

  • | (OR 연산자) : 피연산자 중 한쪽의 값이 1이면 1을 결과로 얻는다. 그 외에는 0을 얻는다.
    • 주로 특정 비트의 값을 변경할 때 사용한다.
  • & (AND 연산자) : 피연산자 양쪽이 모두 1이어야만 1을 결과로 얻는다. 그 외에는 0을 얻는다.
    • 주로 특정 비트의 값을 뽑아낼 때 사용한다.
  • ^ (XOR 연산자) : 피연산자의 값이 서로 다를 때만 1을 결과로 얻는다. 같을 때는 0을 얻는다.
    • 어떤 수 A에 대해 같은 수 B로 두 번 XOR 연산을 수행하면 원래의 값 A로 돌아오는 특징이 있어서 간단한 암호화에 사용된다.
x y x | y x & y x ^ y
1 1 1 1 0
1 0 1 0 1
0 1 1 0 1
0 0 0 0 0

 

비트 전환 연산자 ~

이 연산자는 피연산자를 2진수로 표현했을 때, 0은 1로, 1은 0으로 바꾼다. 
이 연산자에 의해 비트전환되고 나면, 부호있는 타입의 피연산자는 부호가 반대로 변경된다. 즉, 피연산자의 '1의 보수'를 얻을 수 있는 것이다.

x ~x
1 0
0 1

 

쉬프트 연산자 << >>

이 연산자는 피연산자의 2진수 각 자리를 '오른쪽(>>)' 또는 '왼쪽(<<)'으로 이동시킨다.

자리이동으로 저장범위를 벗어난 값들은 버려지고 빈자리는 0으로(음수인 경우 1로) 채워진다.