Java의 비트 마스크 작업

Zeeshan Afridi 2023년10월12일
  1. Java의 비트 마스크 작업
  2. Java의 비트 연산자
Java의 비트 마스크 작업

비트 마스크는 일부 데이터의 이진 표현입니다. 비트 마스킹에서 우리는 모든 데이터를 0과 1과 같은 이진수로 간주합니다.

1true를 나타내고 0false를 나타내므로 이러한 이진 숫자를 부울로 사용할 수도 있습니다.

Java의 비트 마스크 작업

비트 마스킹의 또 다른 정의는 숫자 또는 기타 데이터를 이진 표현으로 시각화하는 것입니다. 일부 비트는 set이고 다른 비트는 unset입니다. 여기서 settrue 또는 1을 의미하고 unsetfalse 또는 0을 의미합니다.

이진 값 10011이 있다고 가정해 보겠습니다. 여기서 1, 4, 5번째 비트는 sets이고 2번째 및 3번째 비트는 unsets입니다.

예제를 통해 비트 마스크를 이해합시다. 4개의 문자 집합 {w,x,y,z}이 있고 문자열의 다른 표현을 원한다고 가정해 보겠습니다.

4비트 {_ _ _ _}의 마스크를 만들기 위해 각 비트는 해당 문자를 참조하는지 여부에 대한 정보를 제공합니다. 더 간단하게 하기 위해 바이너리 조합 1001w,z, 0000은 빈 문자열, 1111w, x, y, z를 의미합니다.

이제 비트와 비트 마스킹을 이해했으므로 비트를 조작하는 데 사용되는 비트 연산자에 대해 알아볼 차례입니다.

Java의 비트 연산자

Java 비트 연산자는 비트 조작을 수행하는 데 사용됩니다. 이러한 연산자는 short, byte, long, char, int 등과 같은 모든 정수 유형에서 사용할 수 있습니다.

다른 비트 연산자가 있습니다. 그들 각각은 다른 목적으로 사용됩니다.

다음은 다음과 같습니다.

  1. 비트 AND(&)
  2. 비트 OR(|)
  3. 비트별 보수(~)
  4. 비트 XOR(^)

Java의 비트 AND(&) 연산자

AND 연산자는 &로 표시되는 비트 연산자입니다. 두 개 이상의 값을 비트 단위로 계산하고 두 값이 모두 true이면 true를 반환합니다. 그렇지 않으면 거짓.

 1(True) & 1(True)  = 1(True)
0(False) & 0(False) = 0(False)
 1(True) & 0(False) = 0(False)
0(False) & 1(True)  = 0(False)

예제 코드:

package articlecodesinjava;
public class ArticleCodesInJava {
  public static void main(String[] args) {
    int a = 3;
    int b = 4;

    // bitwise AND
    // 0011 & 0100=0000 = 0
    System.out.println("a & b = " + (a & b));
  }
}

출력:

a & b = 0

Java의 비트 OR(|) 연산자

OR 연산자도 |로 표시되는 비트 연산자이지만 AND(&) 연산자와 다릅니다. 단일 값이 true인 경우에만 true를 반환합니다. 그렇지 않으면 거짓.

 1(True) | 1(True)  = 1(True)
0(False) | 0(False) = 0(False)
 1(True) | 0(False) = 1(True)
0(False) | 1(True)  = 1(True)

예제 코드:

package articlecodesinjava;
public class ArticleCodesInJava {
  public static void main(String[] args) {
    int a = 3;
    int b = 4;

    // bitwise OR
    // 0011 & 0100=0000 = 7
    System.out.println("a | b = " + (a | b));
  }
}

출력:

a & b = 7

Java의 비트별 보수(~) 연산자

NOT 연산자라고도 하는 비트 보수(~) 연산자는 비트 패턴을 반전할 수 있습니다. 단일 값과 함께 사용되기 때문에 단항 연산자입니다.

이진수 10110이 있고 비트 보수(~) 연산자를 사용하여 이를 부정한다고 가정합니다. 01001이 됩니다.

0을 1로, 1을 0으로 반전시켰습니다.

 ~ 1(True) = 0(False)
~ 0(False) = 1(True)

예제 코드:

package articlecodesinjava;
public class ArticleCodesInJava {
  public static void main(String[] args) {
    // Initial values
    int a = 3, b;

    // bitwise complement of a
    // a = 011 where b = ~a, b =100
    b = ~a;
    System.out.println("~a = " + b);
  }
}

출력:

~a = -4

Java의 비트 XOR(^) 연산자

Java 비트 XOR 연산자는 ^로 표시되는 이진 연산자입니다.

입력 바이너리 값이 모두 다른 경우 true를 반환합니다. 그러나 입력 값이 동일한 경우(0 또는 1) 결과는 거짓입니다.

 1(True) ^ 1(True)  = 0(False)
0(False) ^ 0(False) = 0(False)
 1(True) ^ 0(False) = 1(True)
0(False) ^ 1(True)  = 1(True)

예제 코드:

package articlecodesinjava;
public class ArticleCodesInJava {
  public static void main(String[] args) {
    // Initial values
    int a = 3;
    int b = 4;

    // bitwise xor
    // 0011 ^ 0100 = 0111 = 7
    System.out.println("a ^ b = " + (a ^ b));
  }
}

출력:

a ^ b = 7
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn