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로) 채워진다.