Java의 비트 마스크 작업
비트 마스크는 일부 데이터의 이진 표현입니다. 비트 마스킹에서 우리는 모든 데이터를 0과 1과 같은 이진수로 간주합니다.
1
은 true
를 나타내고 0
은 false
를 나타내므로 이러한 이진 숫자를 부울로 사용할 수도 있습니다.
Java의 비트 마스크 작업
비트 마스킹의 또 다른 정의는 숫자 또는 기타 데이터를 이진 표현으로 시각화하는 것입니다. 일부 비트는 set
이고 다른 비트는 unset
입니다. 여기서 set
은 true
또는 1
을 의미하고 unset
은 false
또는 0
을 의미합니다.
이진 값 10011
이 있다고 가정해 보겠습니다. 여기서 1, 4, 5번째 비트는 sets
이고 2번째 및 3번째 비트는 unsets
입니다.
예제를 통해 비트 마스크를 이해합시다. 4개의 문자 집합 {w,x,y,z}
이 있고 문자열의 다른 표현을 원한다고 가정해 보겠습니다.
4비트 {_ _ _ _}
의 마스크를 만들기 위해 각 비트는 해당 문자를 참조하는지 여부에 대한 정보를 제공합니다. 더 간단하게 하기 위해 바이너리 조합 1001
은 w,z
, 0000
은 빈 문자열, 1111
은 w, x, y, z
를 의미합니다.
이제 비트와 비트 마스킹을 이해했으므로 비트를 조작하는 데 사용되는 비트 연산자에 대해 알아볼 차례입니다.
Java의 비트 연산자
Java 비트 연산자는 비트 조작을 수행하는 데 사용됩니다. 이러한 연산자는 short, byte, long, char, int 등과 같은 모든 정수 유형에서 사용할 수 있습니다.
다른 비트 연산자가 있습니다. 그들 각각은 다른 목적으로 사용됩니다.
다음은 다음과 같습니다.
- 비트 AND(
&
) - 비트 OR(
|
) - 비트별 보수(
~
) - 비트 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 is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn