- 비트 연산자는 이진 숫자나 입력 값 비트에서 작동한다.
- 정수 타입에서 적용할 수 있다.(char 포함)
- 연산 방법
- 10진법의 피연산자를 2진법으로 바꾼다.
- 각 이진수에 연산자를 적용하여 결과를 계산한다.
- 마지막 결과는 10진수로 나타낸다.
int value1 = 6;
int value2 = 5;
int result = 6 | 5;
Binary number of value1 = 0110
Binary number of value2 = 0101
0110
0101
----
0111
7로 변환됨.
비트 논리 연산자
OR(|)
- 두 정수의 각 이진수를 비교하여 둘 중 하나가 1이면 1을 반환한다.
@Test
public void givenTwoIntegers_whenOrOperator_thenNewDecimalNumber() {
int value1 = 6;
int value2 = 5;
int result = value1 | value2;
assertEquals(7, result);
}
0110
0101
-----
0111
AND (&)
- 두 정수의 각 이진수를 비교하여 둘 다 1이면 1을 반환하고 그렇지 않으면 0을 반환한다.
@Test
public void givenTwoIntegers_whenAndOperator_thenNewDecimalNumber() {
int value1 = 6;
int value2 = 5;
int result = value1 & value2;
assertEquals(4, result);
}
0110
0101
-----
0100
result : 4
XOR(^)
- 두 정수의 각 이진수를 비교하여 비트가 모두 다르면 1을 반환합니다.
@Test
public void givenTwoIntegers_whenXorOperator_thenNewDecimalNumber() {
int value1 = 6;
int value2 = 5;
int result = value1 ^ value2;
assertEquals(3, result);
}
0110
0101
-----
0011
result : 3
COMPLEMENT(~)
- 정수의 이진수를 반대로 바꾼다.( 0 -> 1, 1 -> 0 )
@Test
public void givenOneInteger_whenNotOperator_thenNewDecimalNumber() {
int value1 = 6;
int result = ~value1;
assertEquals(-7, result);
}
value1 = 0000 0110
0000 0110 -> 1111 1001
1111 1001 -> 0000 0110 + 1 -> 0000 0111
result : -7