[java] 데이터 타입의 비트 단위 조작 방법

Java는 데이터의 비트 단위 조작을 제공하는 다양한 기능을 제공합니다. 비트 연산은 데이터를 효과적으로 다룰 수 있게 해주며, 특히 네트워크 통신, 암호화, 그래픽 등 다양한 분야에서 유용하게 사용됩니다.

1. 비트 연산자

int a = 5; // 0101
int b = 3; // 0011

int resultAnd = a & b; // 0001 => 1
int resultOr = a | b; // 0111 => 7
int resultXor = a ^ b; // 0110 => 6
int resultNotA = ~a; // 1010 => -6
int resultNotB = ~b; // 1100 => -4

2. 시프트 연산자

int a = 5; // 0000 0101
int b = -5; // 1111 1011

int resultLeftShiftA = a << 2; // 0001 0100 => 20
int resultRightShiftA = a >> 2; // 0000 0001 => 1
int resultRightShiftB = b >> 2; // 1111 1110 => -2
int resultUnsignedRightShiftB = b >>> 2; // 0011 1110 => 30

3. 비트 마스킹

비트 마스킹은 비트 연산과 조합하여 비트 특정 영역의 값을 가져오거나 변경하는 방법입니다.

int number = 141; // 1000 1101
int mask = 240; // 1111 0000

int result = number & mask; // 1000 0000 => 128

4. 비트 패턴의 변경

비트 연산을 이용하면 데이터의 비트 패턴을 효과적으로 변경할 수 있습니다.

int number = 5; // 0000 0101

int setBit4 = number | (1 << 4); // 0001 0101 => 21
int clearBit2 = number & ~(1 << 2); // 0000 0001 => 1
int toggleBit3 = number ^ (1 << 3); // 0000 1101 => 13

5. 비트 단위 조작의 활용

비트 단위 조작은 다양한 분야에서 유용하게 사용될 수 있습니다. 예를 들어, 네트워크 통신에서는 IP 주소의 서브넷 마스크를 비트 연산을 통해 추출할 수 있습니다. 또한, 암호화에서는 비트 연산을 사용하여 암호 키를 생성하거나 암호화 알고리즘에 적용할 수 있습니다.

참고 자료