비트 연산자

choizz156·2022년 9월 11일
0

Java Basic

목록 보기
8/10
  • 비트 연산자는 이진 숫자나 입력 값 비트에서 작동한다.
  • 정수 타입에서 적용할 수 있다.(char 포함)
  • 연산 방법
    • 10진법의 피연산자를 2진법으로 바꾼다.
    • 각 이진수에 연산자를 적용하여 결과를 계산한다.
    • 마지막 결과는 10진수로 나타낸다.
//10진수 피연산자
int value1 = 6;
int value2 = 5;

//or연산자 적용
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; //or연산자 적용
    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; //and연산자 적용
    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;//xor연산자 적용
    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 // 6의 보수이다. 음수가 나온다.

//맨 마지막 비트에 1을 더하여 2의 보수로 만든다.
1111 1001 -> 0000 0110 + 1 -> 0000 0111 
// 10진법 전환
result : -7
profile
조금씩 성장하는 개발자...!

0개의 댓글