케네스로그

[Java] 비트연산자 bitwise 본문

Dev/Java

[Java] 비트연산자 bitwise

kenasdev 2022. 2. 4. 11:21
반응형

비트, 쉬프트 연산은 주로 네트워킹 작업에서 사용되는 저수준의 연산자입니다. 보통은 플래그를 이용한 테스트에서 사용됩니다. 비트수준의 연산은 기본적으로 2진 연산과 보수 시스템에 대한 이해를 필요로 합니다.

💡low-level연산의 표현 단위
long타입이 포함된 경우, 결과는 long타입(8byte/32bit)으로 표현된다.
그외에는 int타입(4byte/16bit)으로 표현됨.
🛑 bitwise 연산은 실수, boolean, 배열, 객체는 사용할 수 없다.

 

비트 보수 연산자 ~ bitwise complement

비트 결과
0 1
1 0

~ 단일 연산은 not 연산과 마찬가지로 피연산자 값의 비트 표현식에 반전을 취합니다.

12의 2진법 표현은 1100, 비트 보수 연산의 결과는 0011

byte b = 12;
byte bc = Integer.toBinaryString(~b); // 32비트 변환
System.out.println(bc & 0xFF)

 

비트 AND 연산자 & bitwise AND

비트1 비트2 결과
0 0 0
0 1 0
1 0 0
1 1 1

AND연산은 두 비트가 1인 경우에만 1을 반환합니다.

AND연산은 두 정수형 피연산자의 2진 표현에 대해 and연산을 수행합니다.

int x = 2;
int y = 3;
System.out.println("b's bit exp: " + Integer.toBinaryString(x)); // 10
System.out.println("y's bit exp: " + Integer.toBinaryString(y)); // 11
System.out.println("x & y: " + Integer.toBinaryString(x&y));     // 10
System.out.println("x&y's result value in integer: " + (x&y));   // 2

 

비트 OR 연산자 | bitwise OR

비트1 비트2 결과
0 0 0
0 1 1
1 0 1
1 1 1

 

OR연산은 두 비트 중 1이 존재하는 경우에만 1을 반환합니다.

AND연산과 마찬가지로 비트 OR연산자는 피연산자의 2진 표현에 OR연산을 한다.

int x = 2;
int y = 3;
System.out.println("b's bit exp: " + Integer.toBinaryString(x)); // 10
System.out.println("y's bit exp: " + Integer.toBinaryString(y)); // 11
System.out.println("x & y: " + Integer.toBinaryString(x|y));     // 11
System.out.println("x|y's result value in integer: " + (x|y));   // 3

 

 

비트 XOR 연산자 ^ biwsise XOR

비트1 비트2 결과
0 0 0
0 1 1
1 0 1
1 1 0

 

XOR연산은 두개의 비트가 같으면 0, 다르면 1을 반환합니다.

int x = 10;
int y = 7;
System.out.println("b's bit exp: " + Integer.toBinaryString(x)); // 1010
System.out.println("y's bit exp: " + Integer.toBinaryString(y)); // 111
System.out.println("x ^ y: " + Integer.toBinaryString(x|y));     // 1101
System.out.println("x^y's result value in integer: " + (x|y));   // 13

 

참조사이트
https://catch-me-java.tistory.com/23?category=438116
https://ndb796.tistory.com/4
반응형

'Dev > Java' 카테고리의 다른 글

[Java] 관계 연산자, 균등 연산자  (0) 2022.02.05
[Java] 쉬프트 연산자 <<, <<<  (0) 2022.02.05
[Java] 산술연산자  (0) 2022.02.04
[Java] 타입 추론 var  (0) 2022.01.30
[Java] 배열의 선언과 메모리 할당  (0) 2022.01.30